一个JFrame
在(从Swing
)允许您设置菜单栏(实例中MenuBar
使用JFrame.setMenuBar(mb);
)。该菜单栏可能会显示在不同的位置,具体取决于它所运行的系统。如果运行该应用程序的操作系统在屏幕顶部具有一个菜单栏,则JFrame
通常在此菜单栏中显示此菜单栏。如果不支持此功能,则菜单栏将显示在框架本身的顶部。
您可以在下面的示例中看到不同系统上的不同行为:
这是我用来设置菜单栏的代码示例:
// Initialize a menu bar
MenuBar mb = new MenuBar();
// Initialize the menu and some menu items, add these to the menu bar
Menu m = new Menu("Menu 1");
MenuItem mi1 = new MenuItem("Menu Item 1");
MenuItem mi2 = new MenuItem("Menu Item 2");
MenuItem mi3 = new MenuItem("Menu Item 3");
m.add(mi1);
m.add(mi2);
m.addSeparator();
m.add(mi3);
mb.add(m);
// Set the menu bar
setMenuBar(mb);
我的问题是:如何检查菜单栏将显示在框架本身还是系统的菜单栏中(如果支持)?如果有任何可能的方法无需初始化和定义菜单栏就可以进行检查,那就太好了。也许这是不可能的,如果是这样的话,是否可以在定义菜单栏后检查同样的问题?
如图所示这里,apple.laf.useScreenMenuBar
指定一个Mac OS功能,可显示现有的JMenuBar
画面,其中一个Mac用户希望看到它上面。尽管它与您的应用程序无关,但是只有当您将菜单栏显示在菜单栏上时,菜单栏才在那里显示。合适的跨平台谓词可能如下所示:
if (System.getProperty("os.name").startsWith("Mac OS X")) {
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("apple.awt.graphics.UseQuartz", "true");
// etc.
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句