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

Имя приложения Java OS X Lion не работает

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

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

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

ScreenShot

Я нахожусь в Mac OS X Lion (10.7.2).

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

4b9b3361

Ответ 1

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

-Xdock: name= "Алессио"

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

-Dcom.apple.mrj.application.apple.menu.about.name = Алессио

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

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

Ответ 2

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

Тем не менее, Martijn Courteaux предупреждает, что вы должны это сделать до того, как все классы AWT будут загружены. И классы AWT будут загружены до запуска вашего метода main(), если он живет в подклассе JFrame.

Ссылка:

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

Ответ 3

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

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

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

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

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

  • Загрузка java.awt.Font (статический инициализатор @see для шрифта)
  • Приобретение разрешения экрана.
  • Загрузка класса, который расширяет JFrame (например, если класс содержит ваш метод main)

Ответ 4

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

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

Ответ 5

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

Ответ 6

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