2013-04-20 71 views
1

我有一個帶有包含JMenuBar的JFrame的Java應用程序。我正在使用Windows L & F.使用箭頭鍵遍歷JMenuBar時跳過禁用的JMenu

當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 2013-04-21 01:13:52