0

我正在尝试将 GraniteDS 框架添加到 Javafx E4 应用程序。我已经将 GraniteDS Javafx 库 osgify 为捆绑包,我能够在 JavaFX OSGi 应用程序中对其进行初始化(osgi 应用程序具有我需要的参数的 jfxStart 方法)。
但是在 Javafx E4 应用程序(使用 e(fx)clipse 向导创建)中没有具有启动功能的类。在 osgi 应用程序代码是:

protected void jfxStart(IApplicationContext applicationContext, Application jfxApplication, Stage primaryStage) {
        contextManager = new SimpleContextManager(new JavaFXApplication(jfxApplication, primaryStage));
        contextManager.initModules(App.class);  
        Context context = contextManager.getContext();
        context.set(this);
    .......
}

问题是 - 如何在 Javafx E4 应用程序中获取jfxApplicationprimaryStage实例以及在哪里(何时)执行初始化(可能在 Activator 启动方法中?)

4

1 回答 1

2

两者都可以通过 DI 获得:

class MyComponent {
  @Inject
  public MyComponent(Application app, @Named("primaryStage") Stage primaryStage) {

  }
}

请注意,primaryStage 永远不会在 e4+JavaFX 应用程序中显示,因此您可能真正想要的是您所显示的阶段 - 所以很可能您真正想要的是

class MyComponent {
  @Inject
  public MyComponent(Application app, Stage primaryStage) {

  }
}
于 2015-03-03T19:48:30.587 回答