JavaFXで確認ダイアログを表示する方法について記載します。
目次
1. 確認ダイアログを表示する方法
Alertクラスのインスタンス生成時の引数に AlertType.CONFIRMATION を指定することで、確認ダイアログを表示することができます。
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
import java.util.Optional; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Button; import javafx.scene.control.ButtonType; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class SampleConfirmation1 extends Application { @Override public void start(Stage pStage) throws Exception { /** * ボタンの定義 */ Button btnShowConfDlg = new Button("確認ダイアログを表示"); btnShowConfDlg.setPrefHeight(50); btnShowConfDlg.setPrefWidth(150); btnShowConfDlg.setOnAction( new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { // Alertインスタンスを生成・設定 Alert alert = new Alert(AlertType.CONFIRMATION); alert.setTitle("確認タイトル"); alert.setContentText("確認メッセージを表示"); // ダイアログを表示 // showAndWaitを使用することで、ダイアログからの応答を待つ Optional<ButtonType> result = alert.showAndWait(); if (result.isPresent() && result.get() == ButtonType.OK) { // OKボタンが押された場合 System.out.println("OKボタンが押されました。"); }else { // 取り消しボタン、もしくはダイアログがバツボタンで閉じられた場合 System.out.println("取り消しボタンが押されました。"); } } }); /** * VBoxにボタンを追加 */ VBox vbox = new VBox(); vbox.setAlignment(Pos.CENTER); // VBox内で中央位置に合わせる vbox.setSpacing(20); // 各コンロール間の垂直方向のスペース vbox.getChildren().add( btnShowConfDlg ); pStage.setTitle("Confirmation"); pStage.setHeight(200); pStage.setWidth(300); pStage.setScene( new Scene( vbox ) ); pStage.show(); } public static void main(String[] args){ Application.launch(args); } } |
上記の例では、setOnActionに匿名クラスを指定して、確認ダイアログを表示しました。
次のように、ラムダ式やダイアログ用のクラスを作成して、ダイアログを表示することもできます。
ラムダ式を使用してダイアログを表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
btnShowConfDlg.setOnAction( event -> { // Alertインスタンスを生成・設定 Alert alert = new Alert(AlertType.CONFIRMATION); alert.setTitle("確認タイトル"); alert.setContentText("確認メッセージを表示"); // ダイアログを表示 // showAndWaitを使用することで、ダイアログからの応答を待つ Optional<ButtonType> result = alert.showAndWait(); if (result.isPresent() && result.get() == ButtonType.OK) { // OKボタンが押された場合 System.out.println("OKボタンが押されました。"); }else { // 取り消しボタン、もしくはダイアログがバツボタンで閉じられた場合 System.out.println("取り消しボタンが押されました。"); } }); |
ダイアログ用クラスを作成して表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
btnShowConfDlg.setOnAction( new ConfDialog() ); //EventHandlerインタフェースを実装したクラス class ConfDialog implements EventHandler<ActionEvent> { @Override public void handle(ActionEvent event) { // Alertインスタンスを生成・設定 Alert alert = new Alert(AlertType.CONFIRMATION); alert.setTitle("確認タイトル"); alert.setContentText("確認メッセージを表示"); // ダイアログを表示 // showAndWaitを使用することで、ダイアログからの応答を待つ Optional<ButtonType> result = alert.showAndWait(); if (result.isPresent() && result.get() == ButtonType.OK) { // OKボタンが押された場合 System.out.println("OKボタンが押されました。"); }else { // 取り消しボタン、もしくはダイアログがバツボタンで閉じられた場合 System.out.println("取り消しボタンが押されました。"); } } } |