0
我試圖讓我的對話框接受<Enter>
的defaultButton和<ESC>
來執行cancelButton。在Modal窗口/對話框中處理JavaFX KeyEvent
我有一些像這樣的代碼:
dialog1 = new Stage(StageStyle.UNDECORATED);
dialog1.initModality(Modality.WINDOW_MODAL);
dialog1.initOwner(primaryStage);
dialog1.setScene(
new Scene(
HBoxBuilder.create().styleClass("modal-dialog").children(
LabelBuilder.create().text("Tells user what to do...").build(),
ButtonBuilder.create().text("Next step").defaultButton(true).onAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent actionEvent) {
// take action and close the dialog1.
// do "OK" actions here...
dialog1.close();
}
}).build(),
ButtonBuilder.create().text("Cancel").cancelButton(true).onAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent actionEvent) {
// abort action and close dialog1.
// do "CANCEL" actions here...
dialog1.close();
}
}).build()
).build()
, Color.TRANSPARENT
)
);
dialog1.getScene().getStylesheets().add(getClass().getResource("ModalDialog.css").toExternalForm());
而且我想添加類似下面來處理鍵盤。是什麼簡單這樣可能嗎?
.onAction(new EventHandler<KeyEvent>() {
@Override public void handle(KeyEvent t) {
if (t.getCode() == KeyCode.ENTER) {
// do "OK" actions here
dialog1.close();
} else {
// do "CANCEL" actions here
dialog1.close();
}
}
}).build()
我的問題是,我看了看周圍的「節點」掛在此處理程序,但似乎無法找到一個。像TextInputBuilder
,或類似的東西。我也不知道語法的確切格式,即使一個TextInputBuilder
是創建正確的節點,所以如果你能告訴我該調用應該採用的確切形式,那會很棒。
我猜是這樣的:
dialog1.setScene(
new Scene(
HBoxBuilder.create().styleClass("modal-dialog").children(
TextInputFieldBuilder.onAction(new EventHandler<KeyEvent>() {
@Override public void handle(KeyEvent t) {
if (t.getCode() == KeyCode.ENTER) {
// do "OK" actions here
dialog1.close();
} else {
// do "CANCEL" actions here
dialog1.close();
}
}
}).build(),
LabelBuilder.create().text("Tells user what to do...").build(),
// [ ... ]