【问题标题】:Substance and MacOS MenuBarSubstance 和 MacOS 菜单栏
【发布时间】:2011-04-16 18:10:21
【问题描述】:

我有一个扩展 JFrame 的 MainWindow 类。 在 MainWindow 我有一个 JMenuBar。

我想在顶部(Apple 符号旁边)显示 OSX 中的 MenuBar。这仅在我没有设置 Substance 皮肤时才有效。是否可以使用 Substance 皮肤并使用 MacOS 菜单栏?

我的代码:

//Set Menu for MacOS
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("com.apple.mrj.application.apple.menu.about.name", name);

try {
    SwingUtilities.invokeAndWait(new Runnable() {  
        public void run() {
            SubstanceSkin skin = new GraphiteGlassSkin();
            SubstanceLookAndFeel.setSkin(skin); //WORKS WHEN I COMMENT THIS (WITHOUT SUBSTANCE SKIN)
            JFrame.setDefaultLookAndFeelDecorated(false);
            MainWindow mainWindow = new MainWindow(name);
            mainWindow.setVisible(true);
        }  
    });
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (InvocationTargetException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

【问题讨论】:

    标签: java macos swing look-and-feel substance


    【解决方案1】:

    您可以像这样单独指定菜单栏的 UI:

                    try {
                        UIManager.setLookAndFeel(new SubstanceBusinessBlackSteelLookAndFeel());
                    } catch (UnsupportedLookAndFeelException ex) {
                        // log...
                    }
    
                    JMenuBar menubar = frame.getJMenuBar(); // assuming you've set the menu bar already
                    String os = System.getProperty("os.name");
    
                    if (os.equals("Mac OS X")) {
                        try {
                            System.setProperty("apple.laf.useScreenMenuBar", "true");
                            menubar.setUI((MenuBarUI) Class.forName("com.apple.laf.AquaMenuBarUI").newInstance());
                        } catch (Exception ex) {
                            // log...
                        }
                    }
    

    【讨论】:

      【解决方案2】:

      是的,如下图。

      $ java -Xdock:name=MyApp -Dswing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel -jar MyApp.jar

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 2012-03-05
      • 2017-10-05
      • 2021-09-27
      • 2021-10-10
      相关资源
      最近更新 更多