我有一个带有 JMenuBar 的 JFrame,我正在 Mac 系统上开发和测试它。在这个 JFrame 上,我已将其中一个 JMenu 编程为禁用。但是,当我将焦点从我的 Java 应用程序转移到我计算机上的某个其他程序,然后又回到这个 JFrame 时,奇怪的事情正在发生。我观察到所有菜单都被禁用。我还观察到所有菜单都已启用。谁能告诉我这里发生了什么?
这是一段将重现错误的代码(至少在我的机器上是这样):
public class MenuProblemExample {
public static void main(String[] args) {
System.setProperty("apple.laf.useScreenMenuBar", "true");
JFrame frame = new JFrame();
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
fileMenu.add(new JMenuItem("open"));
menuBar.add(fileMenu);
JMenu editMenu = new JMenu("Edit");
editMenu.add(new JMenuItem("select all"));
menuBar.add(fileMenu);
menuBar.add(editMenu);
frame.setJMenuBar(menuBar);
fileMenu.setEnabled(false);
frame.setVisible(true);
}
}
当我运行它时,在将焦点切换到另一个窗口然后再返回的操作下,启用的属性不稳定。