ホームページ >Java >&#&チュートリアル >JavaFX で「アプリケーションの起動を複数回呼び出すことはできません」例外を回避する方法

JavaFX で「アプリケーションの起動を複数回呼び出すことはできません」例外を回避する方法

DDD
DDDオリジナル
2024-10-24 06:01:02315ブラウズ

How to Avoid

Java で「アプリケーションの起動を複数回呼び出すことはできません」という例外に対処する方法

launch() を複数回呼び出すJavaFX アプリケーションでは許可されません。これは JavaFX ドキュメントに明示的に記載されています:

複数回呼び出すことはできません。呼び出されないと例外がスローされます。

ウィンドウを定期的に表示するための提案

launch() を複数回呼び出す代わりに、次の手順に従います:

  1. Application.launch() を 1 回呼び出します。
  2. プラットフォームを使用して JavaFX ランタイムをバックグラウンドで実行し続けます。 .setImplicitExit(false).
  3. 別のウィンドウを表示する必要がある場合は、Platform.runLater() 内でウィンドウ 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 では、Application クラスと launch() 呼び出しを行わずに JavaFX ランタイムをトリガーする Platform.startup() が導入されました。 launch() と同様の制限が適用されます。

結論 (オプション):

これらのガイドラインに従うことで、「アプリケーションの起動は禁止されています」を回避できます。 「Be Called More than Once」例外が発生し、JavaFX アプリケーションでウィンドウを定期的に表示します。

以上がJavaFX で「アプリケーションの起動を複数回呼び出すことはできません」例外を回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。