Порядок распространения JavaFX KeyEvent
Я хочу послушать некоторые KeyEvent в моей сцене, скажем,KeyCode.ESCAPE
(закрыть сцену при нажатии).
scene.addEventHandler(KeyEvent.ANY, event -> {
if (event.isConsumed())
return;
switch (event.getCode()) {
case ESCAPE:
stage.hide();
event.consume();
break;
default:
break;
}
});
Теперь узлы внутри сцены могли слушатьESCAPE
тоже.
// ....
someOtherNode.addEventHandler(KeyEvent.ANY, e -> {
if (e.getCode() == KeyCode.ESCAPE) {
// do stuff
e.consume();
}
});
// ....
Как мне убедиться, чтоKeyEvent
будет потребляться из узла, а не сцены?
Основываясь на диаграмме из Oracle, Обходной путь должен был бы добавить манекенNode
в конце иерархии узлов, которая слушаетKeyCode
s
Но есть ли лучшее решение, например, перевернуть маршрут распространения?
РЕДАКТИРОВАТЬ:
Вариант использования:
Всплывающий узел, который блокирует другие узлы, должен был бы прослушивать ключ ESC илиfocusProperty()
так что он может закрыть себя.