JavaFX MenuItem может реагировать на большинство событий KeyPress, устанавливая ActionEvent EventHandler. Однако, в то время как обработчик события захватывает KeyPress KeyCode.ENTER, он делает не catch KeyCode.TAB событие KeyPress. По-видимому, некоторые ключевые события, такие как TAB, обрабатываются на более глубоком уровне. Например, клавиши со стрелками позволяют обходить меню.Как получить JavaFX MenuItem для ответа на TAB KeyPress?
My ContextMenu - это список пополнений строки адреса электронной почты, на которой пользователь начал вводить текст в TextField. Пользователи хотят нажимать клавиши со стрелками, чтобы выбрать нужный элемент, и клавишу TAB для выполнения завершения.
Я могу подключить обработчик событий к самому ContextMenu и захватить нажатие клавиши TAB. Но источником события является ContextMenu, и я не могу найти никаких переменных в ContextMenu, указывающих, какой MenuItem был выделен при нажатии клавиши TAB. MenuItem позволяет css-стилю контролировать внешний вид элемента меню в фокусе, но у него нет никаких свойств, указывающих, находится ли он в фокусе или нет.
Я попытался futzing с EventDispatchChain через MenuItem buildEventDispatchChain() безрезультатно. Кажется, что нет способа перехватить TAB KeyPress или иначе определить, какой пункт меню находился в фокусе, когда была нажата клавиша TAB.
Любые предложения?
Если вы получили это далеко, чтобы перехватить нажатие клавиши табуляции на уровне меню, которые помешали вам хранить последнюю сфокусирована MenuItem и огнь действия для этого один (если он не является нулевым)? Например. приложите прослушиватель фокуса к каждому элементу MenuItem, если элемент будет сфокусирован, чтобы вы знали, что нужно сделать позже .. – eckig
Я не смог перехватить нажатие клавиши TAB на уровне меню. Я не вижу возможности подключить прослушиватель фокуса к MenuItems. MenuItems не являются узлами. –