带/ Java的Macos系统菜单名称?

时间:2009-09-15 17:21:38

标签: java macos plist

我有一个小问题。最近在Mac上迁移过,我一直在拉着我的头发在网上搜索这个,但还没找到我正在寻找的东西。我想在系统菜单中设置应用程序名称,此时此功能不起作用(显示我的主要类名而不是我的应用程序名称)。我应该修改什么属性?

我已经使用正确的apple.laf属性成功地将我的菜单放在系统菜单栏中,但我还没有找到我需要的名称。

我的搜索引导我查看Info.plist文档,我对此一无所知。我试图制作一个只会改变应用程序显示名称的简单程序,但由于某种原因它没有用。帮助

4 个答案:

答案 0 :(得分:3)

根据sun's documentation,您可以将名称作为java命令的命令行参数传递给虚拟机,-Xdock:name="{AppName}"{AppName}替换为您想要显示为标题的{1}}菜单栏。

编辑: 我不相信你可以在实际的Java代码中设置它,但是正如Chuck所说,Apple确实有一个程序Jar Bundler,它旨在用你需要的Info.plist创建jar。根据它的user guide,你需要在属性窗格上设置Bundle Name属性以获得你想要的东西。

答案 1 :(得分:2)

尝试使用附带的Jar Bundler,它可以为您处理所有这些内容。如果你想看看任何特定功能是如何工作的,你可以检查Jar Bundler的输出。

答案 2 :(得分:0)

有两种方式:

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

    System.setProperty("com.apple.mrj.application.apple.menu.about.name", "myAppName!");
    

答案 3 :(得分:0)

设置任何建议的Java(在启动shell脚本中使用-D)属性对我来说都不起作用,因为它们仅适用于AWT& Swing GUI。即使是Mac特定的-Xdock:*选项也无效。

使用此项目的工作是什么https://github.com/codecentric/NSMenuFX

在我的JavaFX Controller菜单中,我添加了以下代码段:

  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