Javafx 2 如何在JavaFX中使用首选项中的值加载FXML?

Javafx 2 如何在JavaFX中使用首选项中的值加载FXML?,javafx-2,Javafx 2,从FXML文件加载时,我使用的是一种典型的JavaFX start()方法: public void start(Stage stage) throws Exception { this.stage = stage; Scene scene = new Scene(FXMLLoader.<AnchorPane>load(getClass().getResource("layout.fxml"))); stage.setScene(scene);

从FXML文件加载时,我使用的是一种典型的JavaFX start()方法:

    public void start(Stage stage) throws Exception {
    this.stage = stage;
    Scene scene = new Scene(FXMLLoader.<AnchorPane>load(getClass().getResource("layout.fxml")));
    stage.setScene(scene);
    stage.show();
}
我想将用户名初始化为首选项中的值,如中所示:

    prefs = Preferences.userRoot().node(this.getClass().getName());
    userName.setText(prefs.get("userName", userName.getText()));
但我什么时候能打电话?如果在stage.show()之前执行此操作,则用户名尚未实例化


TIA

使控制器实现可初始化,并将加载置于
初始化()

还请注意,您可以使用
ResourceBundle
,并将默认值直接放入
fxml
文件。只需创建
my.properties
文件并在加载过程中使用它:

FXMLLoader.load(
    getClass().getResource("layout.fxml"),
    ResourceBundle.getBundle("my"));
然后,您可以在fxml中使用
my.properties
中的属性:

<TextField fx:id="userName" text="%userName" />


您是如何获得控制器的?您正在控制器类中创建Preferences对象吗?我正在FXML中设置控制器,是的,我正在那里创建Preferences。下面是我问题的答案,谢谢你的关注。谢谢!实际上,我在翻阅了更多的JavaFX文档之后才发现了这一部分,但是关于引用FXML文件中的设置的提示听起来非常有用。现在我需要弄清楚如何捕获close事件并将值保存回来。你也能帮上忙吗?请写另一个问题,并提供更多细节。
FXMLLoader.load(
    getClass().getResource("layout.fxml"),
    ResourceBundle.getBundle("my"));
<TextField fx:id="userName" text="%userName" />