web-dev-qa-db-ja.com

JavaFX 2.0:ステージを閉じる(ウィンドウ)

JavaFX 2.0でアプリケーションを作成しています。メインウィンドウから、いくつかの設定で新しいウィンドウを開始しています。設定の調整が完了したら、[変更を保存]などのボタンを押します。

このボタンで変更を保存し、ウィンドウを閉じたいです。クローズとは、バックグラウンドに配置したり、可視性を設定したりするのではなく、強制終了することを意味します。 Stage.close()メソッドについて読んだことがあります

http://docs.Oracle.com/javafx/2.0/api/javafx/stage/Stage.html

ご覧のとおり、ウィンドウを閉じるのではなく、ウィンドウのみを非表示にするHide()メソッドに似ています。

Q:メソッドを知っている人や、ウィンドウを閉じるのに役立つコードを持っている人はいますか?

すべてのヘルプは大歓迎です。ありがとう!

29
haakonlu

リンクしたドキュメントには、stage.close()

このステージを閉じます。この呼び出しは、hide()と同等です。

hide()close()と同等であり、close()はステージを閉じるため、hide()もステージを閉じます。

アプリケーション内のすべてのステージが非表示になった(または、必要に応じて閉じられます)ので、アプリケーションは終了します。わかりにくいですが、それがJavaFXチームがアクションに名前を付けて実装することにした方法です。

必要に応じて、 Platform.setImplicitExit(boolean) メソッドを使用して、最後のウィンドウが閉じられるか非表示になったときにアプリケーションを終了するデフォルトの動作をオフに切り替えることができます。

47
jewelsea

これは私にとって完璧に機能しました(Nodeのインポートで):

((Node)(event.getSource())).getScene().getWindow().hide();
19
Wizard4891

ウィンドウを閉じるイベントのリッスンにも関心があるユーザーの場合、ウィンドウにイベントフィルターを追加します(このイベントは、ユーザーがアプリケーションのOS閉じるボタンを押したときにも発生します)。

    yourWindow.addEventFilter(WindowEvent.WINDOW_CLOSE_REQUEST, event -> {
        // add your code here to handle the close event
        // use event.consume(); to prevent the application from closing
    });

カスタムの閉じるボタンでアプリケーションを閉じる必要がある場合、ボタンのonActionメソッドでイベントを発生させます:

 yourWindow.fireEvent(new WindowEvent(window, WindowEvent.WINDOW_CLOSE_REQUEST));
2
Domenico