gpt4 book ai didi

java - JavaFX中是否有 'Scene Changed Listener'

转载 作者:行者123 更新时间:2023-12-01 22:43:18 26 4
gpt4 key购买 nike

我有一个应用程序,我使用插件管理器加载插件:

public class Main extends Application {

@Override
public void start(Stage primaryStage) {
Platform.setImplicitExit(false);

try {
AnchorPane root = (AnchorPane)FXMLLoader.load(getClass().getResource("/StartWindow.fxml"));
Scene scene = new Scene(root, 420, 215);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
}

try {
final PluginManager pluginManager = new DefaultPluginManager();
pluginManager.loadPlugins();
pluginManager.startPlugins();
List<Module> modules = pluginManager.getExtensions(Module.class);

for (Module module : modules) {
module.initModule(primaryStage);
}
} catch(Exception ex) {
}
}

public static void main(String[] args) {
launch(args);
}
}

加载 fxml 并显示窗口后,我加载插件 (Module.class)。每个模块都有一个 initModule() 方法,我称之为初始化该插件。我将 PrimaryStage 传递给它,这样我就可以在 StartWindow 上进行更改,但从 StartWindow 的 Controller 中我打开多个窗口,以及使用其他 Controller 的其他 fxml。

我的问题是,有没有办法编写某种“SceneChangedListener”,以便在打开新窗口时通知我的模块插件,以便我可以从我的插件修改它?

最佳答案

有一个SceneProperty您可以监视附加到窗口的场景是否发生变化。

没有公共(public) Java 8 API 来监视 JavaFX 运行时已知的所有窗口。该信息可以从不受支持的私有(private) API 中获得,如果您想查看 JavaFX source code,您可能会找到该信息。 ,但不建议大多数应用程序使用不受支持的私有(private) API。可能在内部,ScenicView以这种方式工作,您可能会通过询问 ScenicView 开发人员获得有关该过程的更多信息。

关于java - JavaFX中是否有 'Scene Changed Listener',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25775977/

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