`
翻晒时光
  • 浏览: 9307 次
文章分类
社区版块
存档分类
最新评论

JavaFX之Controll用法

 
阅读更多

在JavaFX的UI开发中,FXController是个很重要的东西,主要是用于UI层和事件层分离。

 事实上,JavaFX使用FXML来开发UI界面,有多种形式来监听我们的事件,下面我们来细看。

 1.通过Controller Class来处理事件

 首先我们创建一个简单的界面,包含一个Button和一个Label。

 如下图:

 

  Label的fx:id设置为mLabel,Button的fx:id设置为mButton,同时将Button的onAction设置为onButtonClick。

  如下图所示:

  然后我们创建一个MainController类,写下如下代码:

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. import javafx.fxml.FXML;  
  2. import javafx.scene.control.Button;  
  3. import javafx.event.ActionEvent;  
  4. import javafx.scene.control.Label;  
  5.   
  6. public class MainLayoutController {  
  7.     @FXML  
  8.     private Button mButton;  
  9.     @FXML  
  10.     private Label mLabel;  
  11.       
  12.     @FXML  
  13.     public void onButtonClick(ActionEvent event) {  
  14.         mLabel.setText("HelloWorld");  
  15.     }  
  16. }  


  记住,我们需要在FXML的最上层添加fx:controller = "" 指向自己的MainController类(带包名)。

 

  我们的Main类如下:

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. import javafx.application.Application;  
  2. import javafx.fxml.FXMLLoader;  
  3. import javafx.stage.Stage;  
  4. import javafx.scene.Parent;  
  5. import javafx.scene.Scene;  
  6.   
  7.   
  8. public class Main extends Application {  
  9.     @Override  
  10.     public void start(Stage primaryStage) {  
  11.         try {  
  12.             Parent parent = FXMLLoader.load(getClass().getResource("MainLayout.fxml"));  
  13.             Scene scene = new Scene(parent,300,200);  
  14.             scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());  
  15.             primaryStage.setScene(scene);  
  16.             primaryStage.show();  
  17.         } catch(Exception e) {  
  18.             e.printStackTrace();  
  19.         }  
  20.     }  
  21.       
  22.     public static void main(String[] args) {  
  23.         launch(args);  
  24.     }  
  25. }  


  通过FXMLLoader加载FXML,并添加到Scene里面。

 

  运行效果如下:

  当我们点击按钮的时候,文本内容变成HelloWorld。

  这个就是我之前的文章中曾经讲过的事件方式。

 

  2.像Android一样处理事件

  接下来,我们来看看另外一种处理事件的方式。

  事实上,JavaFX提供类似于Android的一些方法,我们可以通过fx:id来查找指定的控件,并通过代码实现我们的事件。

  我们将上面的Main方法改动一下如下:

 

[java] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. import javafx.application.Application;  
  2. import javafx.fxml.FXMLLoader;  
  3. import javafx.stage.Stage;  
  4. import javafx.scene.Parent;  
  5. import javafx.scene.Scene;  
  6. import javafx.scene.control.Button;  
  7. import javafx.scene.control.Label;  
  8.   
  9.   
  10. public class Main extends Application {  
  11.     @Override  
  12.     public void start(Stage primaryStage) {  
  13.         try {  
  14.             Parent parent = FXMLLoader.load(getClass().getResource("MainLayout.fxml"));  
  15.             Label label = (Label)parent.lookup("#mLabel");  
  16.             Button button = (Button)parent.lookup("#mButton");  
  17.             button.setOnAction(e ->{  
  18.                 label.setText("HelloWorld JavaFX");  
  19.             });  
  20.             Scene scene = new Scene(parent,300,200);  
  21.             scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());  
  22.             primaryStage.setScene(scene);  
  23.             primaryStage.show();  
  24.         } catch(Exception e) {  
  25.             e.printStackTrace();  
  26.         }  
  27.     }  
  28.       
  29.     public static void main(String[] args) {  
  30.         launch(args);  
  31.     }  
  32. }  

 

  我们通过lookup根据fx:id来查找控件,并添加事件处理。

  运行效果如下:

 

  大家可以明显看见,我们通过lookup查找到控件后,添加的事件覆盖了FXController中的事件。

  这就是另外一种类似Android的查找控件-添加事件的模式,可以根据自己的需要酌情处理。

 

  另外在e(fx)clipse 1.1版本里面,已经可以像Nebeans一样,通过fxml自动生成FXController了,还是非常的方便的。

文章转载:http://blog.csdn.net/ml3947

分享到:
评论

相关推荐

    javafx之属性与绑定

    "javafx之属性与绑定" JavaFX 是一种新的 Java 技术,用于处理动态画面,画面精美令人赞叹。了解 JavaFX 的属性和绑定是非常重要的。 JavaFX 的属性是基于 JavaBean 的模式,但做了扩展和改进。JavaFX 的属性经常...

    javafx使用方法

    javafx使用方法-javafx使用方法

    javaFX Demo 模板案例

    本JavaFX Demo模板案例将帮助我们了解如何使用JavaFX构建一个简单的应用程序。 首先,JavaFX提供了丰富的UI控件,如按钮、文本框、标签、菜单等,这些控件可以通过FXML(FXML Layout)或纯Java代码进行布局和设计。...

    javaFX之HelloWorld部署之为jar签名事宜

    这个“JavaFX之HelloWorld部署之为jar签名事宜”主要探讨的是如何在JavaFX项目中创建一个简单的"Hello, World!"程序,并将其打包成可执行的JAR文件,同时对这个JAR文件进行签名,以便于在不同环境下的安全分发和执行...

    javafx 整合 sparingboot mybatis

    要将 SpringBoot 应用作为 JavaFX 应用运行,我们需要自定义 `SpringApplication` 并重写 `run` 方法,以便在启动时加载 FXML 并初始化 UI。同时,通过 `@Autowired` 注解将 Service 注入到控制器中,使得业务逻辑...

    javafx之可视化效果

    为了充分利用JavaFX的视觉效果,开发者应该熟悉这些类的API,并通过实践来掌握它们的用法。同时,由于中文资料相对较少,学习英语原版文档和社区资源是获取最新和最全面信息的有效途径。 总之,JavaFX的可视化效果...

    javafx-sdk-11.0.2

    3. **文档**:SDK可能还包括API文档,通常位于`docs`目录下,这对于查阅JavaFX的类和方法非常有用。 4. **可执行文件**:如`bin`目录下的`java`、`javac`等命令行工具,它们被用来运行和编译JavaFX应用程序。由于...

    JavaFX2如何使用第三方字体(use custom fonts in JavaFX2)

    2. **加载字体**:在JavaFX中,可以使用`Font.loadFont()`方法来加载字体文件。这个方法需要两个参数:一个是字体文件的URL,另一个是字体的大小。例如: ```java Font customFont = Font.loadFont( getClass()....

    在IntelliJ IDEA 中使用 Gradle JavaFx

    【标题】: "在IntelliJ IDEA 中使用 Gradle JavaFx" 【正文】: JavaFX是一种用于构建桌面、Web和移动应用的富客户端GUI平台,它提供了丰富的图形和媒体功能。IntelliJ IDEA是一款强大的Java集成开发环境,支持多种...

    javafx javafx javafx javafx

    javafx

    JAVAFX之数独游戏(多功能)

    本项目“JAVAFX之数独游戏(多功能)”是一款利用JavaFX技术开发的数独游戏应用程序,具有多种功能,包括自动生成不同难度级别的数独游戏、自动解决数独、游戏检验以及计时功能。 1. **JavaFX基础**:JavaFX提供了...

    javafx之fxml例子_用户登录

    在本例子“javafx之fxml例子_用户登录”中,我们将探讨如何使用NetBeans IDE创建一个基于JavaFX和FXML的用户登录界面。 1. **FXML基本概念** FXML允许开发者用XML格式来描述UI元素的结构和行为,使得界面设计人员...

    JavaFX 教程 (中文).docx

    【JavaFX 教程】 JavaFX 是一个用于创建桌面、移动和嵌入式系统的富客户端应用的Java平台。本教程将深入讲解如何使用JavaFX 8进行应用开发,特别是涉及Scene Builder工具,...祝你学习愉快,开始你的JavaFX之旅吧!

    javafx实现好看的界面

    在这个"javafxѧϰ"压缩包中,很可能包含了使用JavaFX开发的示例代码或项目,这些可以帮助我们学习和理解如何在实际开发中应用JavaFX来创建吸引人的图形界面。 JavaFX的核心特性包括: 1. **图形和媒体支持**:...

    JavaFX2.0之CSS

    JavaFX2.0之CSS JavaFX是一种新兴的技术,用于制作精美的动态画面。本资源主要介绍JavaFX中的CSS样式设计,用于创建样式表和自定义外观设计。 JavaFX CSS是基于W3C的CSS版本2.1和部分扩展的第三版。JavaFX应用程序...

    JavaFX 2.0 電子書 - Pro JavaFX 2

    最新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菜单之多级菜单1

    JavaFX之Scene Graph

    JavaFX为新的java技术,处理动态画面,画面精美令人赞叹,中文资料现今还没有,此资料都是用英文资料集合整理翻译而来。

    JavaFX API文档

    JavaFX API文档。Sun公司已于2008年12月05日发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语言开发互联网应用程序(RIA)。该产品于2007年5月在JavaOne大会上首次对外公布。JavaFX技术主要应用于创建Rich ...

    JavaFX官方教程(中文版)

    JavaFX是一种用于构建桌面、移动和嵌入式设备上的富互联网应用程序...通过学习这个官方教程,开发者不仅可以掌握JavaFX的基本用法,还能深入了解其高级特性,从而开发出功能强大、视觉效果出色的富互联网应用程序。

Global site tag (gtag.js) - Google Analytics