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

Change Stackpane#enabled property of one view from another view in JavaFX

我有 2 个 FXML 文件,带有 2 个单独的 FXMLController。他们在同一个包里。

如果我在第二个 window 单击按钮,我想在第一个 window(first_controller.java) 更改堆栈窗格启用 属性。哪个是最简单的解决方案?

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

终于找到解决办法了。

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

求求大家不要因为简单就用静态的方式! 您的问题有一个正常的解决方案。

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

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