1

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

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

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

有什么方法可以修改 JMenuBar 行为以跳过禁用的 JMenus?

4

1 回答 1

2

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

UIManager.getBoolean("MenuItem.disabledAreNavigable")

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

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

它现在可以按您的预期工作。

于 2013-04-20T22:11:53.020 回答