在 Mac 上设置 Java Swing 应用程序名称

2022-09-02 20:26:36

我正在使用Java 1.6为Mac编写Java Swing应用程序。我已经阅读了许多教程,这些教程将引导您了解如何更好地将Java应用程序与OS X集成,但是有一件事我无法完成。我无法显示应用程序名称(Mac 菜单栏中第一个粗体菜单项)。默认情况下,将显示主类的完全限定类名,我无法对其进行更改。

此站点指出,您必须设置以下属性:

System.setProperty("com.apple.mrj.application.apple.menu.about.name", "AppName");

但这不起作用(我正在运行10.6,所以也许属性名称已更改?

当我在XCode中创建一个新的Java项目时(我通常使用Eclipse),这个名字以某种方式神奇地被设置了!(它从一个可运行的样板应用程序开始)我已经在XCode项目中四处寻找这是如何完成的,但我无法弄清楚!

我的猜测是,它只设置应用程序名称,如果你把你的Java应用程序包装在Mac *.app包里,但想知道是否有人知道答案。谢谢。

编辑:有趣的是,如果我将应用程序打包在可运行的JAR文件中,它会设置应用程序名称,但如果我从Eclipse运行它,则不会设置应用程序名称。


答案 1

在构建 GUI 之前,您应该在应用程序初始化期间执行以下操作:

// take the menu bar off the jframe
System.setProperty("apple.laf.useScreenMenuBar", "true");

// set the name of the application menu item
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "AppName");

// set the look and feel
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

更新。以上代码在Java 1.5中工作,此代码在1.6中可能不起作用

有关新的 Java,请参阅文档

  1. 使用命令行属性:--Xdock:nameXdock:name=YourAppName
  2. 或在信息属性列表文件中设置(plist)CFBundleName

答案 2

在 Mac 10.7.5 上,以编程方式设置属性将适用于 Java 1.6,但不适用于 Java 1.7。