Java-свинг:Ctrl+F1 работает не глобально, а любая другая комбинация клавиш.

StackOverflow https://stackoverflow.com/questions/138533

  •  02-07-2019
  •  | 
  •  

Вопрос

У меня есть графический интерфейс с вкладками на севере.В его входную карту добавляется несколько ключевых событий:

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+Ф1 не имеет функции.Если другой компонент в фокусе (например.JTree), Ctrl+Ф1 выполняет действие.

Проблема в том, что это работает везде, если я изменю код ключа, например. VK_F2.

Ключ Ф1 больше нигде в программе не используется.

Есть идеи?

Спасибо, Андре

Редактировать: Полнотекстовый поиск в исходном коде Java дал ответ:А ToolTipManager регистрирует ключ Ctrl+Ф1 для отображения текста всплывающей подсказки при нажатии комбинации клавиш.Итак, если кнопка с подсказкой находится в фокусе, Ctrl+Ф1 обрабатывается ToolTipManager.Иначе мое действие называется.

Это было полезно?

Решение

Чтобы получить ответ, вот решение, скопированное из вашего редактирования в вопросе.;-)

ToolTipManager регистрирует ключ Ctrl+Ф1 Чтобы отобразить текст подъема инструментов, если нажата комбинация клавиш.Поэтому, если кнопка с подъемом инструментов сфокусирована, Ctrl+Ф1 обрабатывается TooltipManager.В противном случае мое действие называется.

Другие советы

Возможно, ОС перенацеливает Ф1 ключ?Установите прослушиватель ключей и посмотрите, какие события обрабатываются.

КСТАТИ:Было бы полезно, если бы вы могли отредактировать свой вопрос и вставить тестируемый код.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top