Macシステムで開発およびテストしているJMenuBarを備えたJFrameがあります。このJFrameで、JMenuの1つを無効にするようにプログラムしました。ただし、フォーカスを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);
}
}
これを実行すると、フォーカスを別のウィンドウに切り替えてから元に戻すというアクションでは、有効なプロパティが安定しません。