Java OS X Lion Set应用程序名称不起作用

我正在尝试将显示的应用程序名称更改为OS X的菜单栏,但我无法成功。 我已尝试将设置作为main方法中的第一个语句,使用以下代码:

System.setProperty("apple.laf.useScreenMenuBar", "true"); System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Alessio"); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

但它不起作用,在菜单栏中显示主要:

截图

我在Mac OS X Lion(10.7.2)上。

有没有办法在菜单栏中更改应用程序名称? 如果是这样,怎么样?

显然,在将以下选项添加到命令行时,可以添加以下内容:

-Xdock:NAME = “阿莱西奥”

虽然com.apple.mrj.application.apple.menu.about.name是正确的属性名称,但我认为您将设置得太晚。 您是否在命令行上尝试过:

-Dcom.apple.mrj.application.apple.menu.about.name =阿莱西奥

有关为OS X编写Java应用程序的更多信息, 请访问 : http : //www.oracle.com/technetwork/articles/javase/javatomac-140486.html

也许值得看看这样的东西: http : //launch4j.sourceforge.net/

使用JDK8,您可以设置apple.awt.application.name属性以影响“应用程序”菜单名称。

但是,Martijn Courteaux警告您必须在加载任何AWT类之前执行此操作仍然适用。 如果它运行在JFrame的子类中,则在main()方法运行之前将加载AWT类。

参考:

http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/5c1d06cd7d7b/src/macosx/native/sun/osxapp/NSApplicationAWT.m#l157

我不确定这是否适用于OS X Lion ,但我是Mountain Lion

经过一些测试,我的结论是,当且仅当你不做任何事情时,你可以使用旧的方法

  • java.awt.Toolkit
  • 设置外观和感觉

设置应用名称之前

使用Toolkit的一些事情是:(随意编辑此答案并添加项目)

  • 加载java.awt.Font (@see的静态初始值设定项)
  • 获取屏幕分辨率。
  • 加载扩展JFrame的类(例如,如果类包含main方法)

我遇到了同样的问题并发现了这一点:如果你的main方法是你的一个GUI类的成员(例如,一个派生自JFrame),当JVM加载你的类时,它还需要加载一些其他的AWT类。 这些可以与静态初始值设定项中的java.awt.Toolkit进行交互,正如Martijn所观察到的那样,它会在主方法有机会设置它之前检查属性。

尝试将main方法移动到一个单独的类中,该类不扩展任何Swing或AWT类并查看它是否有效。

创建只有main方法的类允许您更改应用程序名称。

尝试放入System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Alessio"); 在你的main代码之前