2015-03-03 4 views
0

Я пытаюсь добавить GraniteDS Framework в приложение Javafx E4. Я уже обойду библиотеки GraniteDS Javafx в пакеты, которые я смог инициализировать в приложении OSFG JavaFX (у приложения 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); 
    ....... 
} 

Вопрос заключается в том - как получить jfxApplication и primaryStage экземпляры в приложении 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

Спасибо. Это работает. Но я использовал его в классе жизненного цикла Cycle, когда этап еще не в контексте. К счастью, GraniteDS можно инициализировать с параметром stage как null. –