読者です 読者をやめる 読者になる 読者になる

路地裏牧場

技術系ブログだったけどごった煮になった謎ブログ

JavatterFXでウィンドウ閉じてもVMが終了しない問題あれこれ

JavatterFXの終了処理はウィンドウを閉じた時にJavaFXのスレッドを終了させるだけのものなので、Swingとかでウィンドウを表示させてるとスレッドが残り続けて、VMが終了しません。
ウィンドウが一回限りの表示なら

setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

でOKなのですが、再利用する場合はそうもいきません。
なのでメインウィンドウの終了イベントにハンドラをぶち込んでMainWindowCloseEventを発火させました。
このイベントは自作です。発火時のDateのみを持ちます。

メインクラス
EventHandler<WindowEvent> handler = new EventHandler<WindowEvent>() {
    @Override
    public void handle(WindowEvent windowEvent) {
        Platform.exit();
        windowEvent.consume();
        EventManager.INSTANCE.eventFire(new MainWindowCloseEvent());
    }
};
Main.getStage().addEventHandler(WindowEvent.WINDOW_CLOSE_REQUEST, handler);
Windowを継承したクラス
@EventHandler
public void onWindowClose(MainWindowCloseEvent event) {
    this.dispose();
}