JavaFX – 如何获取控制器对象的实例

如何获得对控制器类的引用?

这是我的代码片段。

Parent root = FXMLLoader.load(getClass().getResource("my.fxml")); stage.setScene(new Scene(root, 500, 500)); MyController c = stage.getControllerInstance(); <-- HOW??? c.setATextValue("Hello world"); //Set initial value stage.show(); 

Controller类在FXX中的fx:controller属性中指定。 实例将在后台自动创建。 我需要访问该实例才能在表单中设置初始值。

我知道我可以在XML中设置初始值,但我需要在运行时设置它们。

不要使用静态FXMLLoader.load(...)方法。 相反,创建一个FXMLLoader实例并在实例上调用load() 。 然后你可以调用getController()

 FXMLLoader loader = new FXMLLoader(getClass().getResource("my.fxml")); Parent root = loader.load(); MyController c = loader.getController(); stage.setScene(new Scene(root, 500, 500));