JavaFX 2.2 onLoad方法等效

时间:2014-02-20 01:58:02

标签: javafx-2

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

JavaFX是否有类似于Javascript onLoad的东西?

我只想运行一个方法来清除TextFields中的任何数据。

1 个答案:

答案 0 :(得分:12)

加载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>

爪哇

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()方法

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

public void initialize() 

有关详细信息,请参阅:

基于您的问题的观察

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