>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으로 문의하세요.