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

18

我正在使用Java 1.6编写一款Mac的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中运行,则不会设置。


该属性对我在10.5中有效。 - akf
你正在运行Java 1.5吗?看起来只能在那个版本中工作。 - Michael
2个回答

31

在构建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:name命令行属性:-Xdock:name=YourAppName
  2. 或者在信息属性列表文件(plist)中设置CFBundleName

1
是的,在调用 UIManager.setLookAndFeel() 和显示 GUI 之前,我正在设置属性。我正在运行 Java 1.6,所以我猜这个属性在那个版本中不起作用?添加一个 -Xdock:name=AppName 的 VM 参数就可以了,谢谢。 - Michael
1
@uthark,请在答案(第一点)中提供一个更完整的示例,例如-Xdock:name="My App Name"——如果不阅读developer.apple.com页面,这是不明显的。谢谢。 - djb
文档链接返回了404错误,我找不到网站上的文档。 - rrrocky
@rockydgeekgod 7年前,当我回答时,它还在那里,现在已更新到新的位置。 - uthark

5
在Mac 10.7.5上,通过编程设置属性在Java 1.6中可以使用,但在Java 1.7中无法使用。

我知道这更像是一条评论而不是答案,但我不知道如何(或者没有足够的权限)向原始问题添加评论。 - PeterVermont

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接