2016-12-20 14 views
0

javafxアプリケーションのデフォルトの終了プロシージャを変更して、ユーザーに確認ダイアログを表示したい。ユーザーが[OK]を選択すると、確認ダイアログがアプリケーションを終了し、ユーザーが[キャンセル]を選択したときにアプリケーションが実行されたままになります。ユーザーがアプリケーションを終了しようとしたときに確認ダイアログを表示する(Xボタンを押す)

javaFXでこれを行うにはどうすればよいですか?

+0

ので、アラートを使用することができますが、それはまだ私は最高の答えを見つけることが確認プロンプトが –

+1

を表示しても、前にアプリケーションを閉じ、このスレッド内にあります: http://stackoverflow.com/questions/13727314/prevent-or-cancel-exit-javafx-2 –

答えて

0
primaryStage.addEventFilter(WindowEvent.WINDOW_CLOSE_REQUEST, e->{ 
    e.consume(); 
    Popup popup = new Popup(); 
    HBox buttons = new HBox(); 
    Button close = new Button("close"); 
    Button cancel = new Button("cancel"); 
    buttons.getChildren().addAll(close,cancel); 
    buttons.setPadding(new Insets(5,5,5,5)); 
    popup.getContent().add(buttons); 
    popup.show(primaryStage); 
    close.setOnAction(ex -> { 
     Platform.exit(); 
    }); 
    cancel.setOnAction(ec -> { 
     popup.hide(); 
    }); 
}); 
+0

編集後に機能します。どうもありがとうございました。 –

+0

問題ありません。似たような機能を持つ別のプログラムのコードを修正しましたが、私のスタイルではなかったため、編集を忘れることはほとんどありませんでした。お役に立てて嬉しいです! –

0

あなたは8.40

stage.setOnCloseRequest(evt -> { 
    Alert alert = new Alert(AlertType.CONFIRMATION); 
    alert.setTitle("Confirm Close"); 
    alert.setHeaderText("Close program?"); 
    alert.showAndWait().filter(r -> r != ButtonType.OK).ifPresent(r->evt.consume()); 
}); 
私はメインクラスでstop()メソッドをオーバーライドしようとした
+0

私はアラートを使用した例を示していたでしょうが、私はこれまでの不具合を経験し、より安全なオプションを選択しました。 –

関連する問題