JavaFX8に興味を持って勉強を始めたばかりの初心者です。
どうかご教授よろしくお願いします。
Windows10で作成、実行しています。
JavaFX8で作成した画面に「キャンセル」ボタンを設けて、「キャンセル」をクリック、または「ESC」キーを押したら画面を終了する処理を作成しました。
※「キャンセル」ボタンは、cancelButtonに設定しており、ActionEventを設定しています。
ただ、キャンセルが押された場合、まずは、確認ダイアログ(Alertクラス)を表示して、確認ダイアログで「OK」が選択されてから終了したいと考えています。
質問内容ですが、
「ESC」キーを押した場合の処理がわかりません。
画面で「ESC」キーを押すと、ActionEventで受け取るのですが、キーイベントがそのまま確認ダイアログにも渡されてしまっているようです。
その為、一瞬だけ確認ダイアログが表示され、結果としてキャンセルが戻ってきてしまいます。
希望としては、「ESC」キーを押したイベントが警告ダイアログに渡らないようにしたいのですが、何か方法はありますでしょうか?
画面のコントローラークラスのソースです。
public class FXMLDocumentController implements Initializable { @FXML private void handleButtonAction(ActionEvent event) { Alert alert = new Alert(Alert.AlertType.CONFIRMATION); alert.setTitle("確認"); alert.setHeaderText("ヘッダー情報"); alert.setContentText("コンテンツ情報"); Optional<ButtonType> result = alert.showAndWait(); if(ButtonType.OK.equals(result.get())){ Platform.exit(); } } @Override public void initialize(URL url, ResourceBundle rb) { // TODO } }
よろしくお願いします。
追記です。)
ただ、キャンセルが押された場合、まずは、確認ダイアログ(Alertクラス)を表示して、確認ダイアログで「OK」が選択されてから終了したいと考えています。
ではなく
ただ、キャンセルが押された場合__(ESCキーが押された場合も)__、まずは、確認ダイアログ(Alertクラス)を表示して、確認ダイアログで「OK」が選択されてから終了したいと考えています。
fxmlは下記になってます。
<?xml version="1.0" encoding="UTF-8"?> <?import java.lang.*?> <?import java.util.*?> <?import javafx.scene.*?> <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> <AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="dialogsample.FXMLDocumentController"> <children> <Button cancelButton="true" layoutX="126" layoutY="90" onAction="#handleButtonAction" text="CANCEL" /> </children> </AnchorPane>
回答1件
あなたの回答
tips
プレビュー