[英]Java OS X Lion Set application name doesn't work
我正在尝试更改显示在 OS X 菜单栏中的应用程序名称,但我无法成功。 我已经尝试使用以下代码将设置作为主方法中的第一条语句:
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Alessio");
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
但它不起作用,在菜单栏中显示 main :
我在 Mac OS X Lion (10.7.2) 上。
有没有办法在菜单栏中更改应用程序名称? 如果是这样,如何?
使用 JDK8,您可以设置apple.awt.application.name
属性来影响应用程序菜单名称。
但是,Martijn Courteaux 的警告仍然适用:您必须在加载任何 AWT 类之前执行此操作。 如果 AWT 类位于JFrame
的子类中,则它会在main()
方法运行之前加载。
参考:
显然,您可以在将以下选项添加到命令行时添加以下内容:
-Xdock:name="阿莱西奥"
虽然com.apple.mrj.application.apple.menu.about.name是正确的属性名称,但我认为您设置它为时已晚。 您是否在命令行上尝试过:
-Dcom.apple.mrj.application.apple.menu.about.name=Alessio
有关为 OS X 编写 Java 应用程序的更多信息: http : //www.oracle.com/technetwork/articles/javase/javatomac-140486.html
也可能值得一看这样的东西: http : //launch4j.sourceforge.net/
我不确定这是否也适用于 OS X Lion ,但我在Mountain Lion 上。
经过一些测试,我的结论是,当且仅当您不做任何事情时,您才能使用旧方法
java.awt.Toolkit
在设置应用程序名称之前。
使用 Toolkit 的一些事情是:(随意编辑此答案并添加项目)
java.awt.Font
(@see Font 的静态初始化程序)main
方法)我遇到了同样的问题并发现了这一点:如果您的main
方法是您的一个 GUI 类(例如,从 JFrame 派生的一个)的成员,当 JVM 加载您的类时,它还需要加载一些其他 AWT 类. 这些可以与静态初始值设定项中的 java.awt.Toolkit 交互,正如 Martijn 所观察到的,这会导致在您的主方法有机会设置它之前检查该属性。
尝试将 main 方法移动到不扩展任何 Swing 或 AWT 类的单独类中,看看它是否有效。
尝试把System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Alessio");
在你的main
代码之前
创建只有 main 方法的类允许您更改应用程序名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.