2013-04-20 3 views
1

У меня есть приложение Java с JFrame, которое содержит JMenuBar. Я использую Windows L & F.Отключить JMenu при перемещении JMenuBar со стрелками

Когда активен JMenuBar, выделенный JMenu подсвечивается. Пользователь может перейти к предыдущему/следующему JMenu, нажав клавиши со стрелками влево/вправо.

Проблема, с которой я сталкиваюсь, связана с отключенным JMenus. В Windows L & F отключенные JMenus не пропускаются при перемещении с помощью клавиш со стрелками, и они также не подсвечиваются. Когда пользователь переходит на отключенный JMenu, нет никакой визуальной подсказки относительно того, где он находится.

Есть ли способ изменить поведение JMenuBar, чтобы он пропускал отключенный JMenus?

ответ

2

Пытаясь выяснить, как это делается навигация, я смотрел на BasicPopupMenuUI, где я нашел два метода, называемых next/previousEnabledChild(...), которые проверяют следующее UIManager свойства:

UIManager.getBoolean("MenuItem.disabledAreNavigable") 

Таким образом, после установки LAF к окнам добавляют следующая строка кода:

UIManager.put("MenuItem.disabledAreNavigable", Boolean.FALSE); 

и теперь он работает так, как вы ожидаете.

+0

Фантастический! Большое спасибо за Вашу помощь. – user2302873

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