有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

macos MacOSX系统菜单名w/Java?

我有个小问题。最近我在Mac上进行了迁移,我一直在发牢骚,在网上搜索这方面的信息,但还没有找到我真正要搜索的内容。我想在“系统”菜单中设置应用程序名,但该菜单目前不起作用(显示的是我的主类名,而不是我的应用程序名)。我应该修改什么属性

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

我的搜索让我找到了信息。plist文件,对此我一无所知。我试着做一个简单的,只会改变应用程序的显示名称,但由于某种原因,它没有工作。帮忙


共 (4) 个答案

  1. # 1 楼答案

    设置任何建议的Java(在LaunchShell脚本中使用-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);
        }
      }
    

    现在不能使用此库设置菜单本身的粗体名称,但可以在应用程序包的Info.plist中控制该设置CFBundleDisplayName

  2. # 2 楼答案

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

    编辑: 我不相信你可以在实际的Java代码中设置它,但是正如Chuck所说,苹果有一个程序Jar Bundler,它是用来创建包含信息的Jar的。你需要的礼物。根据它的user guide,您需要在属性窗格上设置Bundle Name属性以获得所需的内容

  3. # 3 楼答案

    有两种方法:

    1. 当您调用:java-Xdock:name=myAppName时
    2. 在任何GUI交互之前的运行时

      System.setProperty("com.apple.mrj.application.apple.menu.about.name", "myAppName!");
      
  4. # 4 楼答案

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