我有2个FXML文件,有2个独立的FXMLC控制器。他们是同一个包。
如果我在第二个窗口单击一个按钮,我想在第一个窗口(first_controller.java)更改stackpane enable属性。哪个是最简单的解决方案?
(我试图合并控制器文件,我告诉两个fxml使用相同的控制器,以简单的方式做,但是没有用。也许controller.java只能使用1个FXML源?)
答案 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控制器可以使用它,并更改实例的值。