>Java >java지도 시간 >launch()를 호출하지 않고 여러 JavaFX 창을 만드는 방법은 무엇입니까?

launch()를 호출하지 않고 여러 JavaFX 창을 만드는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-24 06:19:01520검색

How to Create Multiple JavaFX Windows without Recalling launch()?

Java에서 launch()를 두 번 이상 호출하는 방법

JavaFX 응용 프로그램 시작 메서드인 launch()는 호출되도록 설계되었습니다. 신청당 한 번만 가능합니다. launch()를 두 번 이상 호출하려고 하면 "IllegalStateException" 오류가 발생합니다.

해결책: 호출하는 대신 Platform.runLater()

에서 후속 창 생성을 래핑합니다. launch()를 여러 번 수행하려면 다음 접근 방식을 고려하십시오.

  1. launch()를 한 번 호출하여 JavaFX 런타임을 초기화하고 기본 창을 생성합니다.
  2. JavaFX 런타임을 백그라운드에서 계속 실행합니다. Platform.setImplicitExit(false)를 사용합니다. 이렇게 하면 기본 창이 닫힐 때 JavaFX가 자동으로 종료되는 것을 방지할 수 있습니다.
  3. 새 창을 표시해야 하는 경우 생성 및 표시를 Platform.runLater() 블록으로 래핑하세요. 이렇게 하면 JavaFX 작업이 애플리케이션 스레드에서 실행됩니다.

예제 코드:

<code class="java">public class Wumpus extends Application {
    private static final Insets SAFETY_ZONE = new Insets(10);
    private Label cowerInFear = new Label();
    private Stage mainStage;

    @Override
    public void start(final Stage stage) {
        mainStage = stage;
        mainStage.setAlwaysOnTop(true);
        Platform.setImplicitExit(false);
        cowerInFear.setPadding(SAFETY_ZONE);

        cowerInFear.setOnMouseClicked(event -> Platform.exit());
        stage.setScene(new Scene(cowerInFear));
    }

    public static void main(String[] args) {
        launch(args);

        // Another window can be created here by wrapping its creation
        // and display in a Platform.runLater() block.
        Platform.runLater(() -> {
            Stage newStage = new Stage();
            newStage.setScene(new Scene(new Label("Another Window")));
            newStage.show();
        });
    }
}</code>

참고:

  • 위의 Wumpus 클래스는 사용자 정의 JavaFX 애플리케이션을 사용한 접근 방식을 보여줍니다.
  • Swing 구성 요소와 함께 사용하려면 애플리케이션 대신 JFXPanel을 사용할 수 있습니다.
  • 호출 플랫폼. exit()는 JavaFX 런타임을 종료하므로 모든 JavaFX 작업이 완료되면 이 메서드를 호출하는 것이 중요합니다.

위 내용은 launch()를 호출하지 않고 여러 JavaFX 창을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.