У меня есть число TextField
объектов внутри всплывающего окна под названием dialog (type: Stage
).Установить событие KeyPressed для TextField в JavaFX
Я пытаюсь определить обработчик действий для них, который направлен на закрытие сцены после нажатия кнопки перехода на клавиатуру.
Вот моя функция для сцены более близкого:
public void escapeKeyPressed(KeyCode keyCode , Stage dialog){
if (keyCode == KeyCode.ESCAPE){
dialog.close();
System.out.println("escape got called");
}
}
и следующее, где я это называю:
textUsername.setOnAction((event) -> {escapeKeyPressed(KeyCode.ESCAPE ,dialog);});
textAddress.setOnAction((event) -> {escapeKeyPressed(KeyCode.ESCAPE ,dialog);});
textwp.setOnAction((event) -> {escapeKeyPressed(KeyCode.ESCAPE ,dialog);});
textState.setOnAction((event) -> {escapeKeyPressed(KeyCode.ESCAPE ,dialog);});
textloginName.setOnAction((event) -> {escapeKeyPressed(KeyCode.ESCAPE ,dialog);});
Проблема заключается в том, что функция не будет вызвана.
Любая идея, как я могу это исправить? Это cо спаренной отметить, что функция сама по себе работает отлично, если я заменю абонента из setOnAction();
Если у вас есть диалог, вы должны рассмотреть вопрос об использовании Alert (javafx.scene.control.Alert) класса, с ButtonType.CANCEL. Таким образом, вы получите правильно помеченную кнопку в правильном порядке ОС, на котором запущено приложение AND Esc (на платформах, где это считается поведением по умолчанию) закройте диалог. – rli