Название системного меню Mac OSX на Java?
Вопрос
У меня небольшая проблема.Недавно перейдя на Mac, я дергал себя за волосы и искал информацию об этом в Интернете, но не нашел того, что именно искал.Я хочу установить имя приложения в системном меню, которое в данный момент не работает (вместо имени моего приложения отображается имя моего основного класса).Какое свойство я должен изменить?
Я успешно разместил свое меню в строке системного меню, используя правильное свойство apple.laf, но я не нашел то, что мне было нужно для названия.
Мой поиск привел меня к документам Info.plist, о которых я вообще ничего не знаю.Я попытался создать простой вариант, который менял бы только отображаемое имя приложения, но по какой-то причине это не сработало.Помочь?
Решение
Попробуйте использовать включенный Jar Bundler , которая готова обработать все это для вас. И если вы хотите увидеть, как работает какая-то конкретная функция, вы можете проверить вывод Jar Bundler.
Другие советы
Согласно документация sun вы бы передали имя в виртуальную машину в качестве параметра командной строки команде java с помощью -Xdock:name="{AppName}"
замена {AppName}
с тем, что вы хотите отобразить в качестве заголовка в строке меню.
Редактировать:Я не верю, что вы можете установить это в самом коде Java, но, как сказал Чак, у Apple действительно есть программа Jar Bundler, которая предназначена для создания jar с нужным вам Info.plist.В соответствии с руководство пользователя для этого вам нужно установить свойство Bundle Name на панели свойств, чтобы получить то, что вы хотите.
Есть два пути:
<Ол>Во время выполнения до любого взаимодействия с графическим интерфейсом:
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "myAppName!");
Настройки любого из предложенных свойств Java (с -D в скрипте запуска оболочки) у меня не работали, потому что они только для AWT & amp; 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
в Info.plist
вашего пакета приложений. р>