【发布时间】:2014-02-20 01:58:01
【问题描述】:
我正在搜索加载 FXML 文件时将运行的 EventListener 或方法。
JavaFX 有类似于 Javascript onLoad 的东西吗?
我只是想运行一个方法来清除 TextFields 中的所有数据。
【问题讨论】:
标签: javafx-2
我正在搜索加载 FXML 文件时将运行的 EventListener 或方法。
JavaFX 有类似于 Javascript onLoad 的东西吗?
我只是想运行一个方法来清除 TextFields 中的所有数据。
【问题讨论】:
标签: javafx-2
加载 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 中设置文本(其中如果您只是要清除它,则不需要这样做)。
【讨论】: