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 중국어 웹사이트의 기타 관련 기사를 참조하세요!