Захват нажатия клавиши «Tab» как сфокусированным компонентом, так и его контейнером - PullRequest
0 голосов
/ 14 августа 2011

Есть ли способ передать нажатие клавиши, скажем, от JTextField до реализации KeyListener своего контейнера?

Таким образом, на нажатие клавиши будет действовать как текстовое поле, так и JPanel. Прямо сейчас текстовое поле потребляет нажатие клавиши, поэтому оно не существует ниже JPanel.

Ответы [ 2 ]

2 голосов
/ 14 августа 2011

В Swing клавиша tab используется для переключения фокуса с одного компонента на другой.В статье Проверка ввода обсуждается InputVerifier, что может помочь вам сделать то, что вы хотите.

1 голос
/ 15 августа 2011

Вопрос в том, почему вы хотите это сделать? Каковы ваши реальные требования в отличие от вашего попытки решения. Обработка события двумя компонентами, как правило, не очень хорошая идея.

Как правило, вы не должны использовать KeyListeners. Swing был разработан для использования Key Bindings . Однако в этом случае это не поможет, поскольку, как упоминалось ранее, подсистема фокуса обрабатывает клавишу табуляции.

Если это единственное решение вашей проблемы, тогда я думаю, что вы можете использовать KeyEventPostProcessor для прослушивания любого KeyEvent. См. Глобальные прослушиватели событий для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...