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

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

    javafx菜单之多级菜单1

    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的可视化效果...

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

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

    javafx-sdk-11.0.2

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

    在 JavaFx 中使用 JFreeChart 生成图表

    有了数据后,我们可以使用JFreeChart的工厂方法来创建图表对象。例如,创建一个柱状图: ```java JFreeChart chart = ChartFactory.createBarChart( "My Chart", // 标题 "Categories", // X轴标签 "Values", //...

    在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之旅吧!

    java21版本对应的javafx

    值得注意的是,为了能够在Java 21上使用JavaFX 23.0.1,开发人员可能需要确保他们使用的是与JavaFX版本兼容的Java版本。此外,由于Java 21是未来的一个版本,所以相关的支持情况可能还需等待官方文档或社区的进一步...

    JavaFX官方教程(中文版)

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

    JavaFX2.0之CSS

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

    javafx实现好看的界面

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

    JavaFx登录跳转完整教程含源码

    在JavaFx中,我们可以使用Stage类来管理窗口。Stage类提供了多种方法来管理窗口,例如close()方法用于关闭当前窗口,show()方法用于显示新的窗口。 知识点8:MainApplication类 MainApplication类是JavaFx应用程序...

Global site tag (gtag.js) - Google Analytics