在JavaFX的UI开发中,FXController是个很重要的东西,主要是用于UI层和事件层分离。
事实上,JavaFX使用FXML来开发UI界面,有多种形式来监听我们的事件,下面我们来细看。
1.通过Controller Class来处理事件
首先我们创建一个简单的界面,包含一个Button和一个Label。
如下图:
Label的fx:id设置为mLabel,Button的fx:id设置为mButton,同时将Button的onAction设置为onButtonClick。
如下图所示:
然后我们创建一个MainController类,写下如下代码:
- import javafx.fxml.FXML;
- import javafx.scene.control.Button;
- import javafx.event.ActionEvent;
- import javafx.scene.control.Label;
- public class MainLayoutController {
- @FXML
- private Button mButton;
- @FXML
- private Label mLabel;
- @FXML
- public void onButtonClick(ActionEvent event) {
- mLabel.setText("HelloWorld");
- }
- }
记住,我们需要在FXML的最上层添加fx:controller = "" 指向自己的MainController类(带包名)。
我们的Main类如下:
- import javafx.application.Application;
- import javafx.fxml.FXMLLoader;
- import javafx.stage.Stage;
- import javafx.scene.Parent;
- import javafx.scene.Scene;
- public class Main extends Application {
- @Override
- public void start(Stage primaryStage) {
- try {
- Parent parent = FXMLLoader.load(getClass().getResource("MainLayout.fxml"));
- Scene scene = new Scene(parent,300,200);
- scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
- primaryStage.setScene(scene);
- primaryStage.show();
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- launch(args);
- }
- }
通过FXMLLoader加载FXML,并添加到Scene里面。
运行效果如下:
当我们点击按钮的时候,文本内容变成HelloWorld。
这个就是我之前的文章中曾经讲过的事件方式。
2.像Android一样处理事件
接下来,我们来看看另外一种处理事件的方式。
事实上,JavaFX提供类似于Android的一些方法,我们可以通过fx:id来查找指定的控件,并通过代码实现我们的事件。
我们将上面的Main方法改动一下如下:
- import javafx.application.Application;
- import javafx.fxml.FXMLLoader;
- import javafx.stage.Stage;
- import javafx.scene.Parent;
- import javafx.scene.Scene;
- import javafx.scene.control.Button;
- import javafx.scene.control.Label;
- public class Main extends Application {
- @Override
- public void start(Stage primaryStage) {
- try {
- Parent parent = FXMLLoader.load(getClass().getResource("MainLayout.fxml"));
- Label label = (Label)parent.lookup("#mLabel");
- Button button = (Button)parent.lookup("#mButton");
- button.setOnAction(e ->{
- label.setText("HelloWorld JavaFX");
- });
- Scene scene = new Scene(parent,300,200);
- scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
- primaryStage.setScene(scene);
- primaryStage.show();
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- launch(args);
- }
- }
我们通过lookup根据fx:id来查找控件,并添加事件处理。
运行效果如下:
大家可以明显看见,我们通过lookup查找到控件后,添加的事件覆盖了FXController中的事件。
这就是另外一种类似Android的查找控件-添加事件的模式,可以根据自己的需要酌情处理。
另外在e(fx)clipse 1.1版本里面,已经可以像Nebeans一样,通过fxml自动生成FXController了,还是非常的方便的。
相关推荐
"javafx之属性与绑定" JavaFX 是一种新的 Java 技术,用于处理动态画面,画面精美令人赞叹。了解 JavaFX 的属性和绑定是非常重要的。 JavaFX 的属性是基于 JavaBean 的模式,但做了扩展和改进。JavaFX 的属性经常...
javafx使用方法-javafx使用方法
本JavaFX Demo模板案例将帮助我们了解如何使用JavaFX构建一个简单的应用程序。 首先,JavaFX提供了丰富的UI控件,如按钮、文本框、标签、菜单等,这些控件可以通过FXML(FXML Layout)或纯Java代码进行布局和设计。...
这个“JavaFX之HelloWorld部署之为jar签名事宜”主要探讨的是如何在JavaFX项目中创建一个简单的"Hello, World!"程序,并将其打包成可执行的JAR文件,同时对这个JAR文件进行签名,以便于在不同环境下的安全分发和执行...
要将 SpringBoot 应用作为 JavaFX 应用运行,我们需要自定义 `SpringApplication` 并重写 `run` 方法,以便在启动时加载 FXML 并初始化 UI。同时,通过 `@Autowired` 注解将 Service 注入到控制器中,使得业务逻辑...
为了充分利用JavaFX的视觉效果,开发者应该熟悉这些类的API,并通过实践来掌握它们的用法。同时,由于中文资料相对较少,学习英语原版文档和社区资源是获取最新和最全面信息的有效途径。 总之,JavaFX的可视化效果...
3. **文档**:SDK可能还包括API文档,通常位于`docs`目录下,这对于查阅JavaFX的类和方法非常有用。 4. **可执行文件**:如`bin`目录下的`java`、`javac`等命令行工具,它们被用来运行和编译JavaFX应用程序。由于...
2. **加载字体**:在JavaFX中,可以使用`Font.loadFont()`方法来加载字体文件。这个方法需要两个参数:一个是字体文件的URL,另一个是字体的大小。例如: ```java Font customFont = Font.loadFont( getClass()....
【标题】: "在IntelliJ IDEA 中使用 Gradle JavaFx" 【正文】: JavaFX是一种用于构建桌面、Web和移动应用的富客户端GUI平台,它提供了丰富的图形和媒体功能。IntelliJ IDEA是一款强大的Java集成开发环境,支持多种...
javafx
本项目“JAVAFX之数独游戏(多功能)”是一款利用JavaFX技术开发的数独游戏应用程序,具有多种功能,包括自动生成不同难度级别的数独游戏、自动解决数独、游戏检验以及计时功能。 1. **JavaFX基础**:JavaFX提供了...
在本例子“javafx之fxml例子_用户登录”中,我们将探讨如何使用NetBeans IDE创建一个基于JavaFX和FXML的用户登录界面。 1. **FXML基本概念** FXML允许开发者用XML格式来描述UI元素的结构和行为,使得界面设计人员...
【JavaFX 教程】 JavaFX 是一个用于创建桌面、移动和嵌入式系统的富客户端应用的Java平台。本教程将深入讲解如何使用JavaFX 8进行应用开发,特别是涉及Scene Builder工具,...祝你学习愉快,开始你的JavaFX之旅吧!
在这个"javafxѧϰ"压缩包中,很可能包含了使用JavaFX开发的示例代码或项目,这些可以帮助我们学习和理解如何在实际开发中应用JavaFX来创建吸引人的图形界面。 JavaFX的核心特性包括: 1. **图形和媒体支持**:...
JavaFX2.0之CSS JavaFX是一种新兴的技术,用于制作精美的动态画面。本资源主要介绍JavaFX中的CSS样式设计,用于创建样式表和自定义外观设计。 JavaFX CSS是基于W3C的CSS版本2.1和部分扩展的第三版。JavaFX应用程序...
最新JavaFx 2.0 電子書 In Pro JavaFX 2: A Definitive Guide to Rich Clients with Java Technology, Jim Weaver, Weiqi Gao, Stephen Chin, Dean Iverson, and Johan Vos show you how you can use the JavaFX ...
javafx菜单之多级菜单1
JavaFX为新的java技术,处理动态画面,画面精美令人赞叹,中文资料现今还没有,此资料都是用英文资料集合整理翻译而来。
JavaFX API文档。Sun公司已于2008年12月05日发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语言开发互联网应用程序(RIA)。该产品于2007年5月在JavaOne大会上首次对外公布。JavaFX技术主要应用于创建Rich ...
JavaFX是一种用于构建桌面、移动和嵌入式设备上的富互联网应用程序...通过学习这个官方教程,开发者不仅可以掌握JavaFX的基本用法,还能深入了解其高级特性,从而开发出功能强大、视觉效果出色的富互联网应用程序。