Sempadan dan Kedudukan Tetingkap Tidak Boleh Ubah Saiz
Apabila mencipta JFrames tidak boleh ubah saiz dengan Windows Aero didayakan, kaedah setLocation tidak menyesuaikan untuk sempadan tingkap dengan betul, mengakibatkan sempadan bertindih. Ini boleh diperhatikan apabila meletakkan dua bingkai bersebelahan.
Untuk menyelesaikan isu ini, adalah penting untuk memahami pengehadan dan kaveat menetapkan had bagi bekas yang tidak boleh diubah saiz. Apabila melaraskan had untuk bekas yang tidak boleh diubah saiz, adalah penting untuk memastikan bahawa sebarang teks kekal kelihatan tanpa mengira perbezaan fon khusus platform.
Untuk menggambarkan cabaran ini, pertimbangkan contoh berikut:
import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingUtilities; public class Evil extends JPanel { private static final String s = "Tomorrow's winning lottery numbers: 42, "; private JLabel label = new JLabel(s + "3, 1, 4, 1, 5, 9", JLabel.LEFT); public Evil() { this.add(label); } private void display() { JFrame f = new JFrame("Evil"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(this, BorderLayout.WEST); f.pack(); int w = SwingUtilities.computeStringWidth( label.getFontMetrics(label.getFont()), s); int h = f.getHeight(); f.setSize(w, h); f.setResizable(false); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new Evil().display(); } }); } }
Dalam contoh ini, JPanel yang tidak boleh diubah saiz dibuat dengan JLabel yang memaparkan rentetan nombor loteri. Saiz JFrame ditetapkan berdasarkan lebar dan ketinggian teks. Apabila bingkai ditunjukkan, lebarnya dikurangkan untuk menampung lebar rentetan. Walau bagaimanapun, jika platform pengguna mempunyai fon dengan FontMetrics yang lebih besar, teks label mungkin akan dipotong, menjadikan nombor loteri tidak lengkap.
Oleh itu, adalah disyorkan untuk berhati-hati apabila mengubah suai sempadan bekas yang tidak boleh diubah saiz. Jika perlu, pertimbangkan untuk menggunakan gabungan kedudukan relatif dan saiz semula elemen komponen untuk mengekalkan keterlihatan dan kefungsian yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Meletakkan JFrames Tidak Boleh Ubah Saiz dengan Betul dengan Windows Aero Enabled?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!