Mac OSX Название системного меню с Java? - PullRequest
3 голосов
/ 15 сентября 2009

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

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

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

Ответы [ 4 ]

3 голосов
/ 15 сентября 2009

Согласно документации Sun вы передаете имя в виртуальную машину в качестве параметра командной строки для команды java с -Xdock:name="{AppName}" заменой {AppName} на то, что вы хотите отобразить в качестве заголовка Строка меню.

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

2 голосов
/ 15 сентября 2009

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

0 голосов
/ 06 октября 2017

Настройки любых предложенных свойств Java (с -D в скрипте запуска оболочки) у меня не работали, потому что они только для графических интерфейсов AWT и Swing. Даже специфичные для 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 вашего пакета приложений.

0 голосов
/ 26 июня 2012

Есть два способа:

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

    System.setProperty("com.apple.mrj.application.apple.menu.about.name", "myAppName!");
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...