У меня есть свинг-интерфейс с панелью с вкладками на севере. Несколько ключевых событий добавлены к его карте ввода:
InputMap paneInputMap = pane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_E, KeyEvent.CTRL_MASK ), "finish");
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_F1, KeyEvent.CTRL_MASK ), "toggletoolbar");
Если панель с вкладками или другая кнопка на панели инструментов имеет фокус, Ctrl + F1 не имеет функции. Если другой компонент находится в фокусе (например, JTree), Ctrl + F1 выполняет действие.
Проблема в том, что он работает везде, если я изменю код ключа, например, на. VK_F2
.
Клавиша F1 нигде в программе не используется.
Есть идеи?
Спасибо,
Андре
Редактировать: Полнотекстовый поиск в исходном коде Java дал ответ: ToolTipManager
регистрирует ключ Ctrl + F1 для отображения всплывающей подсказки текст, если нажата комбинация клавиш. Поэтому, если кнопка с всплывающей подсказкой находится в фокусе, ToolTipManager
обрабатывается Ctrl + F1 . В противном случае мое действие называется.