我正在搜索在加载FXML文件时将运行的EventListener或方法。
JavaFX是否有类似于Javascript onLoad的东西?
我只想运行一个方法来清除TextFields中的任何数据。
答案 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中设置文本,否则不会有任何数据。如果你要清除它,你就不需要做了。)