20

javaFX アプリケーションを閉じるのに問題があります。ステージから閉じるボタンをクリックすると、アプリケーションが消えますが、タスク マネージャーでアプリケーションを探すと、アプリケーションが閉じずに残っています。以下のコードを使用して、メイン スレッドとすべての子スレッドを強制的に閉じようとしましたが、問題は解決しません。

primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {

            @Override
            public void handle(WindowEvent t) {
                Platform.exit();
            }

        });
4

7 に答える 7

26

唯一の方法は、System.exit(0); を呼び出すことでした。

primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
            @Override
            public void handle(WindowEvent t) {
                Platform.exit();
                System.exit(0);
            }
        });

[編集]

System.exit はアプリケーションを非表示にするだけです。SO のマネージャー タスクを開くと、アプリケーションが表示されます。正しい方法は、スレッドを 1 つずつ確認し、アプリケーションを閉じる前にすべてを閉じることです。

于 2013-02-18T18:13:01.260 に答える
26

アプリケーションは子スレッドを生成しますか? もしそうなら、それらを終了したことを確認しましたか (デーモンスレッドではないと仮定して)?

アプリケーションがデーモン以外のスレッドを生成する場合、プロセスを強制終了するまで、それら (したがってアプリ) は存続し続けます。

于 2013-02-18T15:11:33.487 に答える
10

まずこちらをご覧ください

 public void start(Stage stage) {
        Platform.setImplicitExit(true);
        stage.setOnCloseRequest((ae) -> {
            Platform.exit();
            System.exit(0);
        });
}
于 2017-04-06T12:49:48.410 に答える
3

ちょっと注意:使用するかどうかを確認してください

Platform.setImplicitExit(false);

同様の問題があり、タスクがオーバーフローしました。上記の行はステージを閉じるのではなく、非表示にします。

于 2015-09-22T12:51:40.847 に答える