我有一个包含JMenuBar的JFrame的Java应用程序。我正在使用Windows L&F。
当JMenuBar处于活动状态时,选中的JMenu将突出显示。用户可以通过按左/右箭头键移至上一个/下一个JMenu。
我遇到的问题是禁用的JMenus。在Windows L&F中,使用箭头键遍历禁用的JMenu不会被跳过,它们也不会突出显示。当用户移动到禁用的JMenu上时,就看不到他在哪里。
有什么方法可以修改JMenuBar行为,从而跳过禁用的JMenus吗?
最佳答案
为了弄清楚导航是如何完成的,我查看了BasicPopupMenuUI,在其中找到了两个名为next/previousEnabledChild(...)
的方法,它们正在检查以下UIManager属性:
UIManager.getBoolean("MenuItem.disabledAreNavigable")
因此,在将LAF设置为Windows之后,我添加了以下代码行:
UIManager.put("MenuItem.disabledAreNavigable", Boolean.FALSE);
现在它可以按您期望的方式工作。
关于java - 使用箭头键遍历JMenuBar时跳过禁用的JMenu,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16125126/