首页 >Java >java教程 >为什么我的 JMenuBar 在 Mac OS X 屏幕菜单栏上留下空白?

为什么我的 JMenuBar 在 Mac OS X 屏幕菜单栏上留下空白?

Susan Sarandon
Susan Sarandon原创
2024-10-29 08:20:02260浏览

Why does my JMenuBar leave a blank space on the Mac OS X screen menu bar?

Mac OS X 上的 JMenuBar 移动问题

尝试在 Mac OS X 环境中将 JMenuBar 移动到屏幕菜单栏时,窗口中菜单所在的位置通常会留下空白区域。这个问题可以通过在适当的时候建立属性“apple.laf.useScreenMenuBar”来解决。

解决方案

要解决此问题,请设置属性“apple .laf.useScreenMenuBar”在程序启动时使用以下方法之一:

  1. 启动命令: 在启动命令中包含属性设置:
java -Dapple.laf.useScreenMenuBar=true -jar MyApplication.jar
  1. Info.plist 修改: 将属性添加到应用程序包的 Info.plist 文件:
<key>Properties</key>
<dict>
    <key>apple.laf.useScreenMenuBar</key>
    <string>true</string>
    ...
</dict>

其他注意事项

需要注意的是,在应用程序启动后设置属性可能不会有效。以下代码演示了不存在空格的正确实现:

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 http://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);
            }
        });
    }
}

以上是为什么我的 JMenuBar 在 Mac OS X 屏幕菜单栏上留下空白?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn