【问题标题】:JavaFX 2.2 onLoad Method equivalentJavaFX 2.2 onLoad 方法等效
【发布时间】:2014-02-20 01:58:01
【问题描述】:

我正在搜索加载 FXML 文件时将运行的 EventListener 或方法。

JavaFX 有类似于 Javascript onLoad 的东西吗?

我只是想运行一个方法来清除 TextFields 中的所有数据。

【问题讨论】:

    标签: javafx-2


    【解决方案1】:

    加载 FXML 时调用代码

    在你的控制器类中,定义一个方法:

    @FXML
    protected void initialize(URL location, Resources resources) 
    

    加载 FXML 文件时,FXMLLoader 将自动调用此方法。

    Introduction to FXML 中有一个示例(这里我只是复制了它,稍作修改)。

    FXML

    <VBox fx:controller="com.foo.MyController"
        xmlns:fx="http://javafx.com/fxml">
        <children>
            <Button fx:id="button" text="Click Me!"/>
        </children>
    </VBox>
    

    Java

    package com.foo;
    
    public class MyController implements Initializable {
        @FXML private Button button;
    
        @FXML
        protected void initialize(URL location, Resources resources) {
            button.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    System.out.println("You clicked me!");
                }
            });
        }
    }
    

    initialize() 方法没有位置和 url

    为简化起见,如果您的初始化方法不需要访问用于解析根对象的相对路径的位置,或用于本地化根对象的资源包,您可以跳过实现 Initializable 并只定义一个公共的无参数初始化方法,FXML 加载器将调用它:

    public void initialize() 
    

    欲了解更多信息,请参阅:

    基于您的问题的观察

    您可能对 FXML 处理的工作方式有一点误解,因为当您加载 FXML 文件时,通常会创建一组新节点(例外情况可能是您将控制器设置为 FXMLLoader 或将 FXMLLoader 与依赖注入系统,但这些都不是你的情况)。这意味着没有必要“运行将清除 TextFields 中的任何数据的方法”,因为文本字段是新节点并且其中没有任何数据,除非您在 FXML 中设置文本(其中如果您只是要清除它,则不需要这样做)。

    【讨论】:

    • 谢谢!最后一个问题,另一种情况是我想将一个 id 变量传递给第二个 fxml 控制器,并希望用从 MYSQL DB 检索到的数据填充文本字段。现在我只需按下一个按钮即可检索数据并填充字段。我应该在哪里放置方法/函数来运行它,以便它在创建 fxml 页面时运行?
    猜你喜欢
    • 1970-01-01
    • 2014-04-11
    • 2012-10-04
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多