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



好吧,我以前做过Swing应用程序,我知道如果你想为应用程序菜单显示一个不同的名称(Mac上通常有"Preferences"one_answers"Quit"选项的菜单),你必须使用: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");

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

  • 默认情况下,应用程序菜单将显示在JAR清单的java命令行或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中。

    <key>JVMOptions</key>
    <string>-Xdock:name=Name</string>
    

相关内容

  • 没有找到相关文章