2009-09-15 3 views
3

У меня есть небольшая проблема. Недавно перебравшись на Mac, я тянул свои волосы и искал в Интернете об этом, но не нашел то, что я точно искал. Я хочу установить имя приложения в системном меню, которое не работает на данный момент (вместо имени моего приложения отображается мое имя основного класса). Какую собственность я должен изменить?Имя системного меню Mac OSX с Java?

Я успешно разместил свое меню в строке меню системы, используя правильное свойство apple.laf, но я не нашел то, что мне нужно для имени.

Мой поиск привел меня к документам Info.plist, на которых у меня нет никаких знаний. Я попытался сделать простой, который изменил бы только отображаемое имя приложения, но по какой-то причине он не сработал. Помогите?

ответ

2

Попробуйте использовать прилагаемый Jar Bundler, который должен обрабатывать все это для вас. И если вы хотите увидеть, как работает какая-либо конкретная функция, вы можете проверить выход Jar Bundler.

3

По sun's documentation вы передаете имя в виртуальную машину в качестве параметра командной строки для команды Java с -Xdock:name="{AppName}" замены {AppName} с тем, что вы хотите, чтобы появиться в качестве заголовка в строке меню.

Редактировать: Я не верю, что вы можете установить это в самом Java-коде, но, поскольку Чак сказал, что у Apple есть программа Jar Bundler, которая предназначена для создания банки с Info.plist, который вам нужен. В соответствии с user guide для этого вам нужно установить свойство Bundle Name на панели свойств, чтобы получить то, что вы хотите.

+0

Я ищу способ достижения этого изнутри кода, который не подразумевал бы возиться с такими вещами. –

0

Существует два способа:

  1. когда вы звоните: Java -Xdock: имя = myAppName
  2. В период выполнения перед тем любой GUI interaccion:

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

Настройки для любой из предложенных Java (с -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); 
    } 
    } 

Теперь смелое название само меню не может быть установлен с помощью этой библиотеки , но вы можете управлять этим параметром CFBundleDisplayName в вашего пакета приложений.

+0

Последним вопросом, как правило, должен быть автоматически обработан javapackager. – mipa