2009-09-15 49 views
3

我有一個小問題。最近在Mac上遷移後,我一直在拉我的頭髮,並在網上搜索這件事,但沒有找到我正在尋找的東西。我想在系統菜單中設置應用程序名稱,此時不起作用(我的主類名稱顯示而不是我的應用程序名稱)。我應該修改什麼樣的屬性?Mac OSX系統菜單名稱w/Java?

我已經成功地使用正確的apple.laf屬性將我的菜單放置在系統菜單欄中,但是我沒有找到我需要的名稱。

我的搜索引導我到Info.plist文件,對此我沒有任何知識。我試圖做一個簡單的,只會改變應用程序的顯示名稱,但由於某種原因,它沒有奏效。幫幫我?

回答

2

嘗試使用包含的Jar Bundler,這是爲您處理所有這些東西。如果你想看看有什麼特別的功能,你可以檢查Jar Bundler的輸出。

3

根據sun's documentation你會通過名稱到虛擬機作爲命令行參數到java命令-Xdock:name="{AppName}"你希望出現在菜單欄中的標題是什麼替代{AppName}

編輯: 我不認爲你可以在實際的Java代碼本身中設置它,但正如Chuck所說,Apple確實有一個程序Jar Bundler,它被設計爲用你需要的Info.plist創建jar。根據user guide,你需要在屬性面板上設置Bundle Name屬性來獲得你想要的。

+0

我正在尋找一種從代碼中實現它的方法,這並不意味着擺弄那種東西。 – 2009-09-15 17:31:18

0

有兩種方式:

  1. 當你打電話:JAVA -Xdock:名稱= myAppName
  2. 在運行時間之前的任何GUI interaccion:

    System.setProperty("com.apple.mrj.application.apple.menu.about.name", "myAppName!"); 
    
0

設置任何建議的Java(在啓動shell腳本中使用-D)屬性對我來說都不起作用,因爲它們是唯一的AWT & Swing GUI。即使Mac特定的-Xdock:*選項也沒有工作。

什麼做的工作是使用該項目https://github.com/codecentric/NSMenuFX

在我的JavaFX控制器菜單添加以下代碼片段:

public void initialize() { 
    if ("Mac OS X".equals(System.getProperty("os.name"))) { 
     final MenuToolkit tk = MenuToolkit.toolkit(); 
     final Menu defaultMacApplicationMenu = tk.createDefaultApplicationMenu("My App"); 
     tk.setApplicationMenu(defaultMacApplicationMenu); 
    } 
    } 

現在菜單本身的大膽名稱不能被設置使用這個庫,但是您可以在應用程序包的Info.plist中控制該設置CFBundleDisplayName

+0

最後一個問題通常應該由javapackager自動處理。 – mipa 2017-10-06 11:38:42