我有一个包含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/

10-10 12:39