Как получить фокус в JPopupMenu - PullRequest
6 голосов
/ 14 декабря 2011

Я опытный программист на Java, но новичок в Swing, поэтому, пожалуйста, потерпите меня.

Я хочу иметь окно JPopupWindow с фокусом клавиатуры. Я хочу ответить на клавиши со стрелками, Escape (чтобы закрыть меню) и Enter (чтобы вызвать пункт). Должен ли я добавить KeyListener в меню и кодировать все это сам, или есть какой-то «режим», который я могу установить, чтобы активировать это поведение, которое, кажется, должно быть стандартным.

В стандартном учебном разделе по Swing в JPopupMenus говорится только о мнемонике и ускорителях. Я не особо этого хочу.

Трудно поверить, что это полностью противоречит JPopupMenu.

Какой лучший способ получить что-то вроде того, что я хочу реализовать?

Ответы [ 2 ]

6 голосов
/ 14 декабря 2011

Как только вы сделаете jpopupMenu.show(Component invoker, int x, int y), он будет автоматически реагировать на клавиатуру, как вы хотите. Если это не работает, то вам, возможно, придется решить какую-то другую проблему, т. Е. Какой-то другой компонент вырывает фокус из меню, когда это не должно и т. Д.

3 голосов
/ 14 декабря 2011

Вместо KeyListener, я бы рекомендовал добавить Действие в ваши JPopupMenu.Используйте setComponentPopupMenu(), чтобы добавить всплывающее окно на панель.

...