Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

Есть два пути:

<Ол>
  • когда вы звоните: java -Xdock: name = myAppName
  • Во время выполнения до любого взаимодействия с графическим интерфейсом:

    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 вашего пакета приложений.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top