JavaFX launch() メソッドは、その名前が示すように、アプリケーションのグラフィカル ユーザー インターフェイス (GUI) を開始します。ただし、launch() メソッドには、複数回呼び出すことができないという厳しい制約が課されます。その後 launch() を呼び出そうとすると、IllegalStateException が発生します。
この制限は、JavaFX の基礎となるスレッドセーフな性質に起因します。アプリケーションの GUI が初期化されたら、アプリケーションの存続期間全体にわたってスレッドの安全性を維持することが重要です。 launch() を複数回呼び出すと、このスレッドの安全性が損なわれ、予期しない動作やアプリケーションのクラッシュにつながる可能性があります。
複数の launch() 呼び出しには制限がありますが、次のような制限があります。 GUI ウィンドウを定期的に表示する必要があるアプリケーションのための実用的なソリューション。
実装例
次のコードは、上で概説した戦略をカプセル化しています。
<code class="java">public class RendezvousApplication extends Application { // Singleton JavaFX component private static Scene primaryScene; @Override public void start(Stage primaryStage) throws Exception { // Initialize primaryScene on first launch if (primaryScene == null) { primaryScene = createScene(); } // Attach scene to Stage primaryStage.setScene(primaryScene); primaryStage.show(); } private Scene createScene() { return new Scene(new Label("Rendezvous Window"), 400, 300); } // Called when GUI is closed @Override public void stop() throws Exception { super.stop(); Platform.setImplicitExit(false); } // Launch GUI from another thread public static void displayWindow() { Platform.runLater(() -> { if (primaryScene == null) { launch(RendezvousApplication.class); } else { Stage newStage = new Stage(); newStage.setScene(primaryScene); newStage.show(); } }); } }</code>
このコードは、JavaFX ランタイムを有効に保つ方法を示し、複数の launch() 呼び出しを必要とせずに、異なるスレッドからウィンドウを表示できるようにします。
JavaFX の launch() メソッドには制限がありますが、その方法を理解してください。これらの制限を回避することは、堅牢でスケーラブルな JavaFX アプリケーションを構築するために不可欠です。
以上がJavaFX launch() 呼び出しの制限を回避できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。