首页  >  文章  >  Java  >  如何避免 JavaFX 中的“应用程序启动不得被调用多次”异常

如何避免 JavaFX 中的“应用程序启动不得被调用多次”异常

DDD
DDD原创
2024-10-24 06:01:02206浏览

How to Avoid

如何处理 Java 中的“Application Launch Must Not Be Called More than Once”异常

多次调用 launch()在 JavaFX 应用程序中是不允许的。 JavaFX 文档中对此进行了明确说明:

不得多次调用,否则将引发异常。

定期显示窗口的建议

不要多次调用 launch(),而是按照以下步骤操作:

  1. 调用一次 Application.launch()。
  2. 使用 Platform 保持 JavaFX 运行时在后台运行.setImplicitExit(false)。
  3. 当您需要显示另一个窗口时,请在 Platform.runLater() 中执行 window show() 调用,以确保它由 JavaFX 应用程序线程处理。

示例实现:

<code class="java">public class MyApplication extends Application {
    private Stage primaryStage;

    @Override
    public void start(Stage primaryStage) {
        this.primaryStage = primaryStage;
        primaryStage.setScene(new Scene(new Label("Hello, World!")));
        primaryStage.show();

        // Keep the JavaFX runtime running in the background
        Platform.setImplicitExit(false);
    }

    public void showNewWindow() {
        Platform.runLater(() -> {
            Stage newWindow = new Stage();
            newWindow.setScene(new Scene(new Label("New Window")));
            newWindow.show();
        });
    }

    public static void main(String[] args) {
        launch(args);
    }
}</code>

替代方法:

  • 使用 JFXPanel: 而不是应用程序中,您可以使用JFXPanel。但是,使用模式仍然相似。
  • 使用 Platform.startup():Java 9 引入了 Platform.startup() 来触发 JavaFX 运行时,无需 Application 类和 launch() 调用。类似的限制也适用于 launch()。

结论(可选):

通过遵守这些准则,您可以避免“应用程序启动不得被调用多次”异常并在您的 JavaFX 应用程序中定期显示窗口。

以上是如何避免 JavaFX 中的“应用程序启动不得被调用多次”异常的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn