2017-01-14 16 views
0

javafxのCLIコンソールから、私が望むだけ多くのステージを作成したいと思っています。私は私がやった理由です、アプリケーションのインスタンスが1つしか存在しないことができることを知っている:JavaFX:プライマリステージの可視性と複数の独立したステージ

public class BaseApplication extends Application{ 
    @Override 
    public void start(Stage primaryStage) throws Exception { 
     //we do nothing with this stage. 
    } 
} 

ステージのためのクラス:

public class SomeStage extends State(){ 
    public SomeStage(){ 
    ... 
    show(); 
    } 
} 

そして、このCLIに応じて実行されるコードは、コマンド:

Platform.runLater(()->{ 
    SomeStage someStage=new SomeStage(); 
}); 

しかし、このコードを使用して、私はSomeStageのインスタンスを1つしか作成できません。 BaseApplicationでprimaryStage.show();を実行すると、SomeStageのN個のインスタンスを作成できますが、primaryStageが表示されている場合のみ可能です。それを説明し、この依存関係を主要な段階から解決する方法は?
EDIT
私は、主ステージが表示されていないと私はPlatform.runLaterが呼び出されていない、その後SomeStageの2番目のインスタンスを作成する場合ことが分かりました。私は

System.out.println("Point 1"); 
Platform.runLater(()->{ 
    System.out.println("Point 2"); 
    SomeStage someStage=new SomeStage(); 
}); 

を意味すると私は、画面上でのみPoint 1を参照してSomeStageのコンストラクタが呼び出されません。

+0

"しかし、このコードを使用して、私は' SomeStage'のインスタンスを1つしか作成できません。 "ここで何を意味しますか? Platform.runLater(() - > SomeStage someStage = new SomeStage());を呼び出すたびに、 'SomeStage'の新しいインスタンスが作成されます。 –

+0

@James_Dしてください、私の編集を参照してください。 –

答えて

1

あなたは完全な例を投稿していないので、何が起こっているのかを確認するのは難しいですが、start()メソッドが終了したときにJavaFXツールキットが終了していると思われます。したがって、Platform.runLater()に指定した実行可能ファイルを実行するFXアプリケーションスレッドは実行されません。

Platform.setImplicitExit(false); 

start()メソッドで呼び出してみてください。

+0

@Pavel既にそれを読んでいる(2,3回)。それは私には意味がありません。 –

+0

もう一度:**私はその質問を読んでいます**。これはそれをもっと説明しようとする場所ではありません。非常に不明瞭で低品質です。それを改善したい場合は、それを編集してください。 –

関連する問題