Isu dengan JMenuBar Shifting pada Mac OS X
Apabila cuba mengalihkan JMenuBar ke bar menu skrin dalam persekitaran Mac OS X, ruang kosong selalunya ditinggalkan di mana menu akan berada di dalam tetingkap. Isu ini boleh diselesaikan dengan mewujudkan sifat "apple.laf.useScreenMenuBar" pada masa yang sesuai.
Penyelesaian
Untuk menangani masalah ini, tetapkan sifat "apple .laf.useScreenMenuBar" pada pelancaran program menggunakan salah satu kaedah berikut:
java -Dapple.laf.useScreenMenuBar=true -jar MyApplication.jar
<key>Properties</key> <dict> <key>apple.laf.useScreenMenuBar</key> <string>true</string> ... </dict>
Pertimbangan Tambahan
Perlu ambil perhatian bahawa menetapkan sifat selepas aplikasi dilancarkan mungkin tidak berkesan. Kod berikut menunjukkan pelaksanaan yang betul apabila tiada ruang kosong:
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); } }); } }
Atas ialah kandungan terperinci Mengapakah JMenuBar saya meninggalkan ruang kosong pada bar menu skrin Mac OS X?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!