2015-03-03 71 views
0

我正在尝试为Javafx E4应用程序添加GraniteDS框架。我已经将GraniteDS Javafx库osgify捆绑,我能够在JavaFX OSGi应用程序(osgi应用程序有我需要的参数的jfxStart方法)中进行初始化。
但是在Javafx E4应用程序(使用e(fx)clipse向导创建)中没有带启动功能的类。 在OSGi的应用程序代码是:Eclipse e4与JavaFX - 如何获取应用程序和舞台(javafx)的实例?

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); 
    ....... 
} 

的问题是 - 如何让jfxApplicationprimaryStage情况在JavaFX E4申请,而如(何时)(?可能是在激活启动方法)执行初始化

回答

1

两个都可以通过DI:

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

    } 
} 

请注意,primaryStage从来都不是在E4 + JavaFX应用程序,所以你也许真的想显示的是你中所示的阶段 - 因此最有可能的是什么你真的想要的是

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

    } 
} 
+0

谢谢。这工作。但是我在生活周期经理类中使用它,当舞台还没有上下文时。幸运的是GraniteDS可以使用stage参数初始化为null。 – 2015-03-25 10:35:37