JavaFX 2.2 onLoad方法等效

Law*_*der 6 javafx-2

我正在搜索一个EventListener或方法,它将在我加载FXML文件时运行.

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

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

jew*_*sea 14

加载FXML时调用代码

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

@FXML
protected void initialize(URL location, Resources resources) 
Run Code Online (Sandbox Code Playgroud)

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

FXML简介中有一个示例(我刚刚在这里复制了它,略有修改).

FXML

<VBox fx:controller="com.foo.MyController"
    xmlns:fx="http://javafx.com/fxml">
    <children>
        <Button fx:id="button" text="Click Me!"/>
    </children>
</VBox>
Run Code Online (Sandbox Code Playgroud)

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!");
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

没有location和url的initialize()方法

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

public void initialize() 
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅

根据您的问题进行观察

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