首頁 >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>

注意:

  • 注意:
  • 注意:
注意: 展示了使用自訂JavaFX 應用程式的方法。 為了與 Swing 元件一起使用,可以使用 JFXPanel 來取代應用程式。 呼叫平台。 exit() 將終止 JavaFX 運行時,因此在所有 JavaFX 操作完成時呼叫此方法非常重要。

以上是如何在不呼叫 launch() 的情況下建立多個 JavaFX 視窗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn