使用箭头键遍历JMenuBar时跳过禁用的JMenu

时间:2013-04-20 20:59:07

标签: java swing look-and-feel jmenubar

我有一个带有JFrame的Java应用程序,它包含一个JMenuBar。我正在使用Windows L& F.

当JMenuBar处于活动状态时,将突出显示所选的JMenu。用户可以通过按左/右箭头键移动到上一个/下一个JMenu。

我遇到的问题是残疾人JMenus。在Windows L& F中,当使用箭头键遍历时,不会跳过禁用的JMenus,并且它们也不会突出显示。当用户移动到禁用的JMenu时,没有关于他在哪里的直观线索。

有没有办法修改JMenuBar行为,以便跳过禁用的JMenus?

1 个答案:

答案 0 :(得分:2)

试图找出导航是如何完成的,我正在查看BasicPopupMenuUI,在那里我发现了两个名为next/previousEnabledChild(...)的方法,它们正在检查以下UIManager属性:

UIManager.getBoolean("MenuItem.disabledAreNavigable")

因此,在将LAF设置为Windows后,我添加以下代码行:

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

它现在可以按预期工作。