我有一个带有JFrame的Java应用程序,它包含一个JMenuBar。我正在使用Windows L& F.
当JMenuBar处于活动状态时,将突出显示所选的JMenu。用户可以通过按左/右箭头键移动到上一个/下一个JMenu。
我遇到的问题是残疾人JMenus。在Windows L& F中,当使用箭头键遍历时,不会跳过禁用的JMenus,并且它们也不会突出显示。当用户移动到禁用的JMenu时,没有关于他在哪里的直观线索。
有没有办法修改JMenuBar行为,以便跳过禁用的JMenus?
答案 0 :(得分:2)
试图找出导航是如何完成的,我正在查看BasicPopupMenuUI,在那里我发现了两个名为next/previousEnabledChild(...)
的方法,它们正在检查以下UIManager属性:
UIManager.getBoolean("MenuItem.disabledAreNavigable")
因此,在将LAF设置为Windows后,我添加以下代码行:
UIManager.put("MenuItem.disabledAreNavigable", Boolean.FALSE);
它现在可以按预期工作。