У меня есть приложение с основным графическим интерфейсом с панелью меню и еще одним полноэкранным фреймом, из-за которого некоторые части основного графического интерфейса отображаются в полноэкранном эксклюзивном режиме. Когда я нахожусь в полноэкранном режиме, я хотел бы связать раскрывающееся меню из строки меню как jpopupmenu.
Swing предоставляет функцию getPopupMenu() в JMenu. Эта функция на первый взгляд работает нормально. Я могу наводить курсор на пункты меню и переходить к подменю и просматривать их. Наведение указателя мыши на подменю выделяет подменю, а наведение курсора на простой элемент меню (или элемент меню радиокнопок или элемент меню флажков) не выделяет элемент. Однако я не могу нажать на пункт меню. Однако сочетания клавиш действительно работают нормально. Проблема по сути такая же, как представлена на этом форуме (хотя проблема не решена):
http://www.java-forums.org/new-java/16463-jmenu-jpopupmenu.html
Если я добавлю JMenuItem после того, как строка меню была инициализирована и использована/отображена в основном графическом интерфейсе (таким образом, при переключении на полноэкранный фрейм), элемент меню фактически можно щелкнуть. Этот пункт меню, в свою очередь, также можно щелкнуть в строке меню основного графического интерфейса. Выполнение getPopupMenu() сразу после инициализации jMenu ничего не меняет. Неиспользование полноэкранного эксклюзивного режима также ничего не меняет в проблеме.
Редактировать
Кажется, я упустил важную информацию: я тестирую приложение на Mac OSX и использую: System.setProperty("apple.laf.useScreenMenuBar", "true");
Чтобы сделать строку меню, используйте родную строку меню. Если я отключу это, всплывающее меню будет работать как положено. Это похоже на ошибку в Mac Java API? Их какой-то способ преодолеть, это?
Прошу прощения, что забыл упомянуть об этом, я не знал, что это на что-то повлияет (хотя это кажется очевидным).