gpt4 book ai didi

javafx - 如何在 JavaFx8 中获取场景 Controller ?

转载 作者:行者123 更新时间:2023-12-02 08:23:05 25 4
gpt4 key购买 nike

我使用了几个场景,目前每个场景都有一种方法,比如

  void setScene1() {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/main2.fxml"));
Parent root = FXMLLoader.load();
Scene scene = new Scene(root);
loader.<Controller1>getController().callMethod();
primaryStage.setScene(scene);

}

但我想记住场景并这样做

  void setScene1() {
FXMLLoader loader = scene1.getLoaderSomehow(); // < ---- ????
loader.<Controller1>getController().callMethod();
primaryStage.setScene(scene1);

}

最佳答案

这可以使用 Scene.getUserData and Scene.setUserData 来完成:

...
Scene scene = new Scene(root);
scene.setUserData(loader);
FXMLLoader loader = (FXMLLoader) scene.getUserData();

但你应该记住以下几点:

  • 您仅使用加载器来获取 Controller 。加载器可能包含对可能被垃圾回收的对象的引用。考虑改为保留对 Controller 的引用。
  • 任何其他地方都会更方便(并且取决于方法更安全)。您正在“记住” 场景,那么为什么不“记住”加载器/ Controller 呢?

关于javafx - 如何在 JavaFx8 中获取场景 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34941411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com