Mengubah Saiz dan Mengehadkan Saiz Komponen dalam Swing GroupLayout
Swing's GroupLayout menyediakan pengurusan susun atur yang fleksibel untuk antara muka pengguna yang kompleks. Walau bagaimanapun, mengawal saiz komponen dalam GroupLayout boleh menjadi mencabar apabila berurusan dengan saiz semula dinamik. Artikel ini akan membentangkan penyelesaian untuk mengehadkan lebar maksimum label komponen dalam GroupLayout sambil mengekalkan tindak balasnya terhadap perubahan saiz bingkai.
Isunya
Pertimbangkan GroupLayout dengan kumpulan selari untuk susun atur mendatar dan kumpulan berjujukan untuk susun atur menegak, sebagai berikut:
*-----------------------------------------------* | label A | field A | | label B | field B | | label C | field C | *-----------------------------------------------*
Tugasnya adalah untuk mengehadkan lebar label (contoh JLabel) kepada satu pertiga daripada lebar bingkai manakala bingkai boleh diubah saiznya.
Penyelesaian
1. Bergantung pada Saiz Pilihan
Daripada menetapkan kekangan saiz secara manual, GroupLayout boleh menggunakan saiz pilihan label. Label mempunyai saiz pilihan lalai yang menyesuaikan dengan kandungan teksnya. Secara lalai, GroupLayout menghormati saiz pilihan ini untuk tingkah laku saiz semula komponen.
2. Penjajaran GroupLayout
Untuk menjustifikasikan label, GroupLayout.Alignment.TRAILING boleh digunakan:
layout.setHorizontalGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING) .addComponent(label1) .addComponent(label2) .addComponent(label3)) .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(field1) .addComponent(field2) .addComponent(field3)) );
3. Contoh Kod
Kod berikut menunjukkan pelaksanaan penyelesaian ini:
public class GroupPanel extends JPanel { private JLabel label1 = new JLabel("Primary:"); private JTextField field1 = new JTextField(16); private JLabel label2 = new JLabel("Secondary:"); private JTextField field2 = new JTextField(16); private JLabel label3 = new JLabel("Tertiary:"); private JTextField field3 = new JTextField(16); public GroupPanel(int n) {
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengehadkan Lebar JLabel dalam GroupLayout Swing Sambil Mengekalkan Responsif kepada Pengubah Saiz Bingkai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!