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中文网其他相关文章!