Mac OS X에서 JMenuBar 이동 문제
Mac OS X 환경에서 JMenuBar를 화면 메뉴 표시줄로 이동하려고 하면, 창 내에서 메뉴가 있는 위치 뒤에 빈 공간이 남아 있는 경우가 많습니다. 이 문제는 적절한 시점에 "apple.laf.useScreenMenuBar" 속성을 설정하여 해결할 수 있습니다.
해결책
이 문제를 해결하려면 "apple" 속성을 설정하세요. .laf.useScreenMenuBar" 다음 방법 중 하나를 사용하여 프로그램 시작 시:
java -Dapple.laf.useScreenMenuBar=true -jar MyApplication.jar
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!