2012-01-18 98 views
25

我試圖更改顯示在OS X菜單欄中的應用程序名稱,但我無法成功。我曾嘗試設置與第一條語句用下面的代碼的主要方法:Java OS X Lion設置應用程序名稱不起作用

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

,但它不工作,在菜單欄中顯示主:

ScreenShot

我m在Mac OS X Lion上(10.7.2)。

有沒有辦法在菜單欄中更改應用程序名稱?如果是這樣,怎麼樣?

+0

AFAIR [Java Web Start的(http://stackoverflow.com/tags/java-web-start/info)可以配置在OS X – 2012-01-19 03:31:57

回答

10

顯然,你可以做到這一點增加,當你將以下選項添加到命令行:

-Xdock:NAME = 「阿萊西奧」

雖然com.apple。 mrj.application.apple.menu.about.name是正確的房產名稱,我想你會設置它太晚。您是否嘗試過它的命令行上:

-Dcom.apple.mrj.application.apple.menu.about.name =阿萊西奧

更多有關編寫Java應用程序爲OS X :http://www.oracle.com/technetwork/articles/javase/javatomac-140486.html

這也可能是值得考慮的是這樣的: http://launch4j.sourceforge.net/

+3

它的應用程序標題僅適用於:-Xdock:name =「Alessio」。 – aleroot 2012-01-22 08:51:57

7

我不知道這是否也適用於OS X獅子,但我在山獅

一些測試後,我的結論是,你可以使用舊的方法當且僅當你不

  • java.awt.Toolkit
  • 設置的外觀做任何事情和感覺

之前設置應用程序名稱。

使用工具包有些事情是:(隨意編輯這個答案,並添加項目)

  • 加載java.awt.Font(字體的@see靜態初始化)
  • 獲取的屏幕分辨率。
  • 加載擴展的JFrame(比如如果類包含你main法)
+1

我將相關的'System.setProperty()'調用從我的JFrame類調入我的主類,並開始工作 - 不涉及命令行標誌。謝謝。 – cbednarski 2013-07-08 05:55:20

+0

起初,我只是將'System.setProperty(...)'移到了main方法的一個自己的類中,因爲之前我有一個'UIManager.setLookAndFeel(...)'調用,所以這並不起作用。現在通過在'System.setProperty(...)'調用:)之後把這個調用完美地工作:) – trinity420 2016-07-13 14:22:24

2

我有同樣的問題,發現了這個類:如果你main方法是你的GUI類之一的成員(例如,從JFrame派生的),當JVM加載你的類時,它也需要加載一些其他的AWT類。這些可以在靜態初始化器中與java.awt.Toolkit進行交互,正如Martijn所觀察到的那樣,這會在您的主要方法有機會設置它之前使屬性被檢查。

嘗試將主方法移動到單獨的類中,該類不擴展任何Swing或AWT類並查看它是否有效。

+2

OS X 10.1.1 with java 1.8.0_23-b17:即使main()是單獨放置在一個小型的類中,並在第一個時候調用System.setProperty()。 – Joe 2015-01-19 21:50:40

+1

如果您設置了'apple.awt.application.name'屬性,它就可以工作。剛剛在OS X 11.0.1上測試 – halfdan 2015-11-30 12:16:02

0

創建只有主方法的類允許您更改應用程序名稱。

0

儘量把System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Alessio");main代碼別的

14

之前使用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

+0

適用於我,MacOSX 10.10 Yosemite,Oracle JDK 8 – webo80 2016-07-11 14:27:27

相關問題