如何更改Mac OS X启动板中显示的Java应用程序名称

时间:2017-02-18 19:07:20

标签: java macos launcher

当我的Java SWT写的应用程序在OS X下运行时,Eclipsejar下的应用程序,其名称在启动板中显示为“ java“,如图所示。

wrong app name shown in the launchpad

在我的代码的开头,我调用了Display.setAppName("MyApp"),菜单栏和菜单项中的应用程序名称是正确的,它显示为MyAppAbout MyApp,{{1菜单项行为正常,我可以接收和处理相应的事件。 所以问题只与应用程序名称有关,如启动板中所示。有没有办法在没有创建应用程序包的情况下从代码中以编程方式设置正确的名称?

P上。 S.代码实际上是在JVM下运行的,JVM是使用Configure MyApp在我的代码中启动的:

ProcessBuilder

一种递归,需要在启动应用程序之前以编程方式计算一些jvm选项和类路径。

4 个答案:

答案 0 :(得分:2)

您应该使用jar创建一个macOS应用程序包,您可以在其中将软件包显示名称放在软件包的Info.plist文件中。这已由Oracle(http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html)详细记录。

Apple也记录了Java应用程序包的结构:https://developer.apple.com/library/content/documentation/Java/Conceptual/Java14Development/03-JavaDeployment/JavaDeployment.html

答案 1 :(得分:1)

@m。 vokhm我希望你试过以下链接

http://www.eclipse.org/articles/Article-Branding/branding-your-application.html

同时检查“3。如何触发发布”在以下链接中

http://www.vogella.com/tutorials/EclipseLauncherFramework/article.html

答案 2 :(得分:1)

对我有用的唯一答案是here。简而言之:

使用JDK8,您可以设置Johnjohn属性来影响“应用程序”菜单名称。

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

换句话说,设置apple.awt.application.name并在创建JFrame之前进行设置。

P.S。如果您尝试更改停靠应用程序标题,此命令可能会起作用:

apple.awt.application.name

答案 3 :(得分:0)

在构建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,请参阅documentation

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