Swing应用程序菜单名称在Java 1.8中无法正确显示

好的,所以我之前已经完成了Swing应用程序,并且我知道如果你想为应用程序菜单显示一个不同的名称(通常具有“首选项”和“退出”选项的Mac上的那个),你必须使用: System.setProperty("com.apple.mrj.application.apple.menu.about.name", "App name"); 它必须在创建JFrame之前执行。 我已经完成了这个,但它继续显示我的Main类的名称作为菜单名称,就好像我根本没有编写那行代码。 我搜索了这个问题,但找不到任何有用的东西,然后我就在这里搜索,但是每个遇到类似问题的人都在运行Java 1.5,1.6或1.7。 所以我想也许它与我目前的Java版本1.8有关。

这个 , 这个 , 这个没用。 这个 , 这个 , 这要么发送给我过时的信息,要么链接不再起作用了。 另外,我正在运行Mac 10.8。

任何建议/答案将不胜感激。

更新:

这是我原来的代码:

 package bouncing_off_axes; /** * This is the driver class of this program. * * @author Mason * */ public class Main { /** * The driving method. * * @param args */ public static void main(String[] args) { System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Physics Engine Practice - Bouncing Balls"); SimulationController view = new SimulationController("Test"); } } 

以下是垃圾邮件提供给其他人的解决方案:

 package bouncing_off_axes; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JPanel; /** @see https://stackoverflow.com/questions/8955638 */ public class NewMain { public static void main(String[] args) { System.setProperty("apple.laf.useScreenMenuBar", "true"); System.setProperty( "com.apple.mrj.application.apple.menu.about.name", "Name"); EventQueue.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new JFrame("Gabby"); final JPanel dm = new JPanel() { @Override public Dimension getPreferredSize() { return new Dimension(320, 240); } }; dm.setBorder(BorderFactory.createLineBorder(Color.blue, 10)); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(dm); frame.pack(); frame.setLocationByPlatform(true); JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu("File"); menuBar.add(fileMenu); frame.setJMenuBar(menuBar); frame.setVisible(true); } }); } } 

显然我需要10个声望来发布图片,所以我无法向您展示结果,但它没有成功。

在Mac OS X 10.9上使用Java 8,设置System属性

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

在更改应用程序菜单中显示的名称时似乎无效。 仍然有效的替代方案包括:

  • 默认情况下,应用程序菜单将显示java命令行中指定的类的简单名称或JAR清单的Main-Class属性。

      java -cp build/classes mypackage.Name java -jar dist/MyJar.jar 
  • 使用-Xdock:name="Name"命令行参数。

     java -Xdock:name="Name" -cp build/classes mypackage.Main java -Xdock:name="Name" -jar MyJar.jar 
  • 将应用程序JAR添加到Mac应用程序包中,如此处所示,将该属性添加到Info.plist

     JVMOptions -Xdock:name=Name