首页 >Java >java教程 >JavaFX FXML:构造函数与 `initialize()` 方法 – 有什么区别?

JavaFX FXML:构造函数与 `initialize()` 方法 – 有什么区别?

Patricia Arquette
Patricia Arquette原创
2024-12-05 19:46:16827浏览

JavaFX FXML: Constructor vs. `initialize()` Method – What's the Difference?

JavaFX FXML 控制器:区分构造函数和初始化方法的角色

在 JavaFX 中,FXML 用于以声明方式构造用户界面。 FXML 文件的 fx:controller 属性中指定的控制器类充当 GUI 元素的交互逻辑。两个生命周期方法,构造函数和initialize()方法,在初始化控制器时起着至关重要的作用。

首先调用构造函数,然后注入@FXML字段及其相应的Java对象。随后,执行initialize()方法。

构造函数与Initialize方法

构造函数和initialize()方法的关键区别在于初始化的时机它们的执行以及对 FXML 注释的访问。构造函数首先执行,但它无法访问用@FXML注释的字段。这些字段只能在initialize()方法中访问。

这允许构造函数在FXML组件注入之前执行任务,而initialize()方法可以访问和操作这些注入的组件。

实际使用

构造函数应该用于在 GUI 完全加载之前需要执行的任务,例如从一个数据库。另一方面,initialize() 方法适合初始化 GUI 组件,例如设置事件处理程序或修改其默认值。

示例

考虑以下代码:

public class MainViewController {

    // Constructor
    public MainViewController() {
        System.out.println("first");
    }

    // Initialize method
    @FXML
    public void initialize() {
        initializeComponents();
        System.out.println("second");
    }

    private void initializeComponents() {
        // Initialize GUI components, e.g., add event handlers
    }
}

在此示例中,构造函数在将任何 Java 对象注入到FXML 注释字段。然后,在注入这些字段后,initialize() 方法会打印“秒”。这演示了这些生命周期方法的顺序执行。

以上是JavaFX FXML:构造函数与 `initialize()` 方法 – 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn