2015-03-03 100 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