Java OS X Lion Set имя приложения не работает - PullRequest
29 голосов
/ 19 января 2012

Я пытаюсь изменить имя приложения, отображаемое в строке меню OS X, но у меня ничего не получится.Я пробовал настройки как первое утверждение в методе main со следующим кодом:

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

, но это не работает, в строке меню отображается main:

ScreenShot

Я на Mac OS X Lion (10.7.2).

Есть ли способ изменить имя приложения в строке меню?Если да, то как?

Ответы [ 6 ]

20 голосов
/ 03 ноября 2015

Используя JDK8, вы можете установить свойство apple.awt.application.name для воздействия на имя меню приложения.

Однако предупреждение Мартин Курто о том, что вы должны сделать это до загрузки любых классов AWT, по-прежнему применяется.И классы AWT будут загружены до того, как ваш метод main() будет запущен, если он находится в подклассе JFrame.

. Ссылка:

http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/5c1d06cd7d7b/src/macosx/native/sun/osxapp/NSApplicationAWT.m#l157

10 голосов
/ 19 января 2012

Очевидно, вы можете сделать это, добавив следующее, добавив следующие параметры в командную строку:

-Xdock: имя = "Алессио"

Хотя com.apple.mrj.application.apple.menu.about.name - это правильное имя свойства, я думаю, вы установите его слишком поздно. Вы пробовали это в командной строке как:

-Dcom.apple.mrj.application.apple.menu.about.name = Alessio

Для получения дополнительной информации о написании Java-приложений для OS X: http://www.oracle.com/technetwork/articles/javase/javatomac-140486.html

Возможно, стоит взглянуть на что-то вроде этого: http://launch4j.sourceforge.net/

7 голосов
/ 23 июля 2012

Я не уверен, что это также работает для OS X Lion , но я на Mountain Lion .

После некоторого тестирования я пришел к выводу, что вы можете использовать старый подход тогда и только тогда, когда вы ничего не делаете с

  • java.awt.Toolkit
  • Настройка внешнего вида

до установки имени приложения.

Некоторые вещи, которые используют Toolkit: (Не стесняйтесь редактировать этот ответ и добавлять элементы)

  • Загрузка java.awt.Font (см. Статический инициализатор шрифта)
  • Получение разрешения экрана.
  • Загрузка класса, расширяющего JFrame (например, если класс содержит ваш main метод)
2 голосов
/ 22 сентября 2012

У меня была такая же проблема, и я обнаружил это: если ваш метод main является членом одного из ваших классов GUI (например, одного из производных от JFrame), когда JVM загружает ваш класс, ему также необходимозагрузить некоторые другие классы AWT.Они могут взаимодействовать с java.awt.Toolkit в статических инициализаторах, что, как заметил Мартин, заставляет свойство проверяться до того, как ваш основной метод сможет его установить.

Попробуйте переместить основной метод вотдельный класс, который не расширяет классы Swing или AWT и проверяет, работает ли он.

0 голосов
/ 03 февраля 2015

попробуйте поставить System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Alessio"); на ваш код main, прежде чем что-либо еще

0 голосов
/ 21 февраля 2014

Создание класса, в котором есть только метод main, позволяет изменить имя приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...