2010-07-01 132 views
17

我正在爲使用Java 1.6的Mac編寫Java Swing應用程序。我已閱讀了大量教程,指導您如何更好地將Java應用程序與OS X集成,但有一件事我無法工作。我無法獲取應用程序名稱(Mac菜單欄中第一個粗體顯示的菜單項)。默認情況下,將顯示主類的完全限定類名,我無法改變它。在Mac上設置Java Swing應用程序名稱

This site說,你必須設置以下屬性:(?我運行10.6,所以也許屬性名稱更改)

System.setProperty("com.apple.mrj.application.apple.menu.about.name", "AppName"); 

但是,這並不工作。

當我在XCode中創建一個新的Java項目時(我通常使用Eclipse),該名稱以某種方式神奇地被設置! (它可以啓動一個可運行的鍋爐應用程序)我已經查看了XCode項目的所有工作,但我無法弄清楚它!

我的猜測是,如果您將Java應用程序封裝在Mac * .app包中,但它想知道是否有人知道答案,它只設置應用程序名稱。謝謝。

編輯:有趣的是,如果我將應用程序打包到可運行的JAR文件中,它將設置應用程序名稱,但如果我從Eclipse運行應用程序,則不會。

+0

該屬性爲我工作在10.5 – akf 2010-07-01 02:04:03

+0

您是否正在運行Java 1.5?它似乎只適用於該版本。 – Michael 2010-07-01 13:52:35

回答

29

你應該應用程序初始化期間執行以下操作,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. 還是在信息屬性設置CFBundleName列表文件(plist中)
+1

是的,我在調用'UIManager.setLookAndFeel()'之前設置屬性,然後顯示我的GUI。我正在運行Java 1.6,所以我猜該屬性不適用於該版本? *添加'-Xdock:name = AppName'虛擬參數工作*,謝謝。 – Michael 2010-07-01 13:49:12

+0

+1版本問題解決方案!謝謝! – 11684 2012-05-05 11:02:16

+0

@uthark請使用更完整的示例(如-Xdock:name =「我的應用程序名稱」)來改進答案(第1項) - 如果沒有閱讀developer.apple.com頁面,則不太明顯。謝謝。 – djb 2016-02-20 13:20:54

6

在Mac 10.7.5,編程設置屬性與Java 1.6工作,但不與Java 1.7

+0

我知道這是比評論更多的評論,但不知道如何(或者沒有足夠的特權)給原始問題添加評論。 – PeterVermont 2013-01-05 18:36:02

相關問題