【发布时间】:2014-09-10 22:16:43
【问题描述】:
我有一个使用插件管理器加载插件的应用程序:
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 的控制器我打开了多个窗口,其他 fxmls 与其他控制器。
我的问题是,有没有办法编写某种“SceneChangedListener”,以便在打开新窗口时通知我的模块插件,以便我可以从我的插件中修改它?
【问题讨论】: