0

GraniteDS フレームワークを Javafx E4 アプリケーションに追加しようとしています。私はすでにGraniteDS Javafxライブラリをバンドルにosgifyしており、JavaFX OSGiアプリケーションで初期化できました(osgiアプリには必要なパラメータを持つjfxStartメソッドがあります)。
しかし、Javafx E4 アプリケーション (e(fx)clipse ウィザードを使用して作成) には、start 関数を持つクラスはありません。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 に答える