当我的Java
SWT
写的应用程序在OS X
下运行时,Eclipse
和jar
下的应用程序,其名称在启动板中显示为“ java“,如图所示。
在我的代码的开头,我调用了Display.setAppName("MyApp")
,菜单栏和菜单项中的应用程序名称是正确的,它显示为MyApp
,About MyApp
,{{1菜单项行为正常,我可以接收和处理相应的事件。
所以问题只与应用程序名称有关,如启动板中所示。有没有办法在没有创建应用程序包的情况下从代码中以编程方式设置正确的名称?
P上。 S.代码实际上是在JVM下运行的,JVM是使用Configure MyApp
在我的代码中启动的:
ProcessBuilder
一种递归,需要在启动应用程序之前以编程方式计算一些jvm选项和类路径。
答案 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: