3

I have a slight problem. Having recently migrated on Mac, I've been pulling my hair and searching the web about this but have not found what I was exactly searching for. I want to set the application name in the system menu, which doesn't work at the moment (my main class name is displayed instead of my app name). What property should I modify?

I have successfully placed my menu in the system menu bar using the correct apple.laf property, but I haven't found what I needed for the name.

My search led me to Info.plist documents, on which I have no knowledge whatsoever. I tried to make a simple one that would only change the app's display name, but for some reason it hasn't worked. Help?

4

4 回答 4

3

根据sun 的文档,您可以将名称作为 java 命令的命令行参数传递给虚拟机,并-Xdock:name="{AppName}"替换{AppName}为您希望在菜单栏中显示为标题的内容。

编辑:我不相信您可以在实际的 Java 代码本身中设置它,但正如 Chuck 所说,Apple 确实有一个程序 Jar Bundler,它旨在使用您需要的 Info.plist 创建 jar。根据它的用户指南,您需要在属性窗格上设置 Bundle Name 属性才能获得所需的内容。

于 2009-09-15T17:27:41.373 回答
2

尝试使用包含的Jar Bundler,它可以为您处理所有这些东西。如果您想了解任何特定功能的工作原理,您可以检查 Jar Bundler 的输出。

于 2009-09-15T17:32:22.940 回答
0

有两种方法:

  1. 当你打电话时:java -Xdock:name=myAppName
  2. 在任何 GUI 交互之前的运行时:

    System.setProperty("com.apple.mrj.application.apple.menu.about.name", "myAppName!");
    
于 2012-06-26T06:06:50.343 回答
0

设置任何建议的 Java(在启动 shell 脚本中使用 -D)属性对我不起作用,因为它们仅适用于 AWT 和 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);
    }
  }

现在无法使用此库设置菜单本身的粗体名称,但您可以CFBundleDisplayNameInfo.plist应用程序包中控制该设置。

于 2017-10-06T08:58:03.783 回答