从JavaFX中的另一个视图更改一个视图的Stackpane#enabled属性

时间:2015-03-04 18:59:33

标签: java class javafx controller fxml

我有2个FXML文件,有2个独立的FXMLC控制器。他们是同一个包。

如果我在第二个窗口单击一个按钮,我想在第一个窗口(first_controller.java)更改stackpane enable属性。哪个是最简单的解决方案?

(我试图合并控制器文件,我告诉两个fxml使用相同的控制器,以简单的方式做,但是没有用。也许controller.java只能使用1个FXML源?)

2 个答案:

答案 0 :(得分:2)

求求你,请不要仅仅因为容易而使用静态方式! 这是解决问题的正常方法。

FXMLLoader loader = new FXMLLoader(this.getClass().getResource("Example.fxml"));
Parent root = (Parent) loader.load();
YourController controller1 = loader.getController();
controllerOfSecondFXML.methodToPassYourController(controller1);

因此,如果您拆分FXML的加载,您可以轻松获取FXML的控制器并使用他们的方法。只需像我上面写的那样得到控制器并将其传递给另一个。这是面向对象的方式。

答案 1 :(得分:0)

最后我找到了解决方案。

在第一个FXMLController中,StackPane必须用作"公共静态Stackpane"。在这种情况下,其他FXML控制器可以使用它,并更改实例的值。