2013-07-19 2 views
3

Я добавил JPopupMenu с определенными JMenuItems в JTable в своем приложении java. Затем я установил ускорители для этих JMenuitems. Теперь моя проблема в том, что когда я пытаюсь использовать эти горячие клавиши, они не работают, пока я не открою этот JPopupMenu. Когда это всплывающее меню открыто в это время, горячая клавиша работает правильно, что действительно бесполезно. Пожалуйста, помогите мне.Горячая клавиша для JMenuItem JPopupMenu

ответ

2

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

Вы можете попробовать:

  1. Добавить вы всплывающее меню в строке меню вашего кадра. Затем будет распознан ускоритель
  2. Вручную добавьте KeyBindings для каждого ускорителя в всплывающем меню. Прочтите учебник Swing по телефону How to Use Key Bindings для получения дополнительной информации.
+0

1-е решение не возможно, потому что мое приложение имеет только один jframe rest - это jpanels, которые динамически загружаются. Я также попробовал второй вариант, и он не сработал. – user2067787

+0

+1 @ user2067787: Для справки ['ImageApp'] (http://stackoverflow.com/a/5129757/230513) - пример, который использует те же« Action »для меню и всплывающего окна. – trashgod

+0

'jpanels, которые динамически загружаются' - вы можете динамически обновлять строку меню при загрузке панели. 'Я также попробовал второй вариант, и это не сработало' - опубликуйте свой SSCCE, демонстрирующий проблему, когда вы используете Key Bindings. – camickr

Смежные вопросы