Подтвердить что ты не робот

Установка имени приложения Java Swing на Mac

Я пишу приложение Java Swing для Mac с помощью Java 1.6. Я прочитал несколько руководств, которые помогут вам лучше интегрировать ваше Java-приложение с OS X, но есть одна вещь, которую я не смог получить. Я не могу получить имя приложения (первый, полужирный пункт меню в строке меню Mac) для отображения. По умолчанию отображается полное имя класса основного класса, и я не могу его изменить.

Этот сайт говорит, что вы должны установить следующее свойство:

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

Но это не работает (я запускаю 10.6, так что, возможно, имя свойства изменилось?).

Когда я создаю новый проект Java в XCode (обычно я использую Eclipse), имя каким-то волшебным образом устанавливается! (он запускает вас с помощью исполняемого приложения с котельной таблицей). Я посмотрел вокруг проекта XCode, как это делается, но я не могу понять это!

Я предполагаю, что он устанавливает только имя приложения, если вы упакуете приложение Java в пакет Mac *.app, но задавались вопросом, знает ли кто-нибудь ответ. Спасибо.

EDIT. Интересно, что он задает имя приложения, если я упакую приложение в исполняемый JAR файл, но не если я запустил его из Eclipse.

4b9b3361

Ответ 1

Во время инициализации приложения перед созданием графического интерфейса вы должны сделать следующее:

// 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());

UPDATE. Над кодом работает в Java 1.5, этот код может не работать в 1.6

Для новой java см. documentation:

  • Использовать свойство командной строки -Xdock:name: - Xdock:name=YourAppName
  • Или установите CFBundleName в файле списка свойств информации (plist)

Ответ 2

На Mac 10.7.5, программно устанавливая свойство, работающее с Java 1.6, но не с Java 1.7