المثال التالي يعلمك طريقة جعل حجم الأشياء التي تضيفها في الـ Frame يتغير بشكل تلقائي عند تكبير أو تصغير النافذة عند إستخدام الكلاس GroupLayout
.
أي ستتعلم كيف تجعل محتوى النافذة Resizable.
ملاحظة: هذا نفس المثال الرابع مع تعديل الأحجام فقط, لهذا ستجد أننا شرحنا فقط أكواد تعديل الأحجام التي أضفناه على المثال الرابع.
مثال
import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.GroupLayout; import javax.swing.LayoutStyle; import java.awt.Container; public class Main { public static void main(String[] args) { JFrame frame = new JFrame("Login"); Container container = frame.getContentPane(); GroupLayout groupLayout = new GroupLayout(container); container.setLayout(groupLayout); groupLayout.setAutoCreateContainerGaps(true); groupLayout.preferredLayoutSize(container); JLabel label_1 = new JLabel("User"); JLabel label_2 = new JLabel("Password"); JTextField textField_1 = new JTextField(); JTextField textField_2 = new JTextField(); JButton button_1 = new JButton("Register"); JButton button_2 = new JButton("Login"); groupLayout.setHorizontalGroup( groupLayout.createSequentialGroup() .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING) .addComponent(label_1) .addComponent(label_2) ) // هنا قمنا بإضافة هامش بين 0 و 20 بيكسل على يمين المجموعة الأولى أفقياً // يتم تحديده بشكل تلقائي عند التلاعب بحجم النافذة .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,GroupLayout.DEFAULT_SIZE, 20) .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING) // هنا قمنا بجعل عرض مربعات النصوص يزيد أو يقل بشكل تلقائي عند التلاعب بحجم النافذة .addComponent(textField_1, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(textField_2, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(groupLayout.createSequentialGroup() // هنا قمنا بجعل عرض الأزرار يزيد أو يقل بشكل تلقائي عند التلاعب بحجم النافذة // و أضفنا هامش بين 0 و 20 بيكسل بين الأزرار // يتم تحديده بشكل تلقائي عند التلاعب بحجم النافذة .addComponent(button_1, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,GroupLayout.DEFAULT_SIZE, 20) .addComponent(button_2, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ) ) ); groupLayout.setVerticalGroup( groupLayout.createSequentialGroup() .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(label_1) .addComponent(textField_1) ) // هنا قمنا بإضافة هامش بين 0 و 20 بيكسل على يمين المجموعة الأولى أفقياً // يتم تحديده بشكل تلقائي عند التلاعب بحجم النافذة .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,GroupLayout.DEFAULT_SIZE, 20) .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(label_2) .addComponent(textField_2) ) // هنا قمنا بإضافة هامش بين 0 و 20 بيكسل على يمين المجموعة الأولى أفقياً // يتم تحديده بشكل تلقائي عند التلاعب بحجم النافذة .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,GroupLayout.DEFAULT_SIZE, 20) .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) .addComponent(button_1) .addComponent(button_2) ) ); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } }
ستظهر لك النافذة التالية عند التشغيل.
قم بتكبير و تصغير حجم النافذة و لاحظ كيف سيتم تغير أحجام الأشياء الموجودة فيها بشكل تلقائي.