Swingطريقة ترتيب محتوى الـ JFrame بشكل متوازي أفقياً و عامودياً بواسطة الكلاس GroupLayout
المثال التالي يعلمك طريقة ترتيب محتوى الـ Frame بشكل متوازي أفقياً و عامودياً بواسطة الكلاس GroupLayout.
مثال
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.GroupLayout;
import java.awt.Container;
public class Main {
public static void main(String[] args) {
// أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
JFrame frame = new JFrame("GroupLayout demo");
// لترتيب الأشياء التي نضيفها بداخلها GroupLayout هنا جعلنا النافذة تستخدم الـ
Container container = frame.getContentPane();
GroupLayout groupLayout = new GroupLayout(container);
container.setLayout(groupLayout);
// هنا قمنا بإضافة هوامش بين النافذة و المجموعات و بين جميع الأشياء التي سنضيفها في المجموعات
groupLayout.setAutoCreateGaps(true);
groupLayout.setAutoCreateContainerGaps(true);
groupLayout.preferredLayoutSize(container);
// هنا قمنا بتعريف 4 أزرار
JButton btn1 = new JButton("Button 1");
JButton btn2 = new JButton("Button 2");
JButton btn3 = new JButton("Button 3");
JButton btn4 = new JButton("Button 4");
// وراء بعضهم أفقياً btn2 ثم الـ btn1 هنا قمنا بإضافة الـ
// btn4 و الـ btn3 ثم أضفنا مجموعة جديدة متوازية و أضفنا فيها الـ
groupLayout.setHorizontalGroup(
groupLayout.createSequentialGroup()
.addComponent(btn1)
.addComponent(btn2)
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(btn3)
.addComponent(btn4)
)
);
// وراء بعضهم ضمن مجموعة متوازية عامودياً. أي على نفس السطر btn3 ثم الـ btn2 ثم الـ btn1 هنا قمنا بإضافة الـ
// لأنه موجود معه في نفس المجموعة btn3 لوحده و بالتالي سيظهر تحت الـ btn4 ثم أضفنا الـ
groupLayout.setVerticalGroup(
groupLayout.createSequentialGroup()
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(btn1)
.addComponent(btn2)
.addComponent(btn3)
)
.addComponent(btn4)
);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
frame.pack(); // هنا جعلنا حجم النافذة يناسب حجم المحتوى
frame.setVisible(true); // هنا جعلنا النافذة مرئية
}
}
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.GroupLayout;
import java.awt.Container;
public class Main {
public static void main(String[] args) {
// أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
JFrame frame = new JFrame("GroupLayout demo");
// لترتيب الأشياء التي نضيفها بداخلها GroupLayout هنا جعلنا النافذة تستخدم الـ
Container container = frame.getContentPane();
GroupLayout groupLayout = new GroupLayout(container);
container.setLayout(groupLayout);
// هنا قمنا بإضافة هوامش بين النافذة و المجموعات و بين جميع الأشياء التي سنضيفها في المجموعات
groupLayout.setAutoCreateGaps(true);
groupLayout.setAutoCreateContainerGaps(true);
groupLayout.preferredLayoutSize(container);
// هنا قمنا بتعريف 4 أزرار
JButton btn1 = new JButton("Button 1");
JButton btn2 = new JButton("Button 2");
JButton btn3 = new JButton("Button 3");
JButton btn4 = new JButton("Button 4");
// وراء بعضهم أفقياً btn2 ثم الـ btn1 هنا قمنا بإضافة الـ
// btn4 و الـ btn3 ثم أضفنا مجموعة جديدة متوازية و أضفنا فيها الـ
groupLayout.setHorizontalGroup(
groupLayout.createSequentialGroup()
.addComponent(btn1)
.addComponent(btn2)
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(btn3)
.addComponent(btn4)
)
);
// وراء بعضهم ضمن مجموعة متوازية عامودياً. أي على نفس السطر btn3 ثم الـ btn2 ثم الـ btn1 هنا قمنا بإضافة الـ
// لأنه موجود معه في نفس المجموعة btn3 لوحده و بالتالي سيظهر تحت الـ btn4 ثم أضفنا الـ
groupLayout.setVerticalGroup(
groupLayout.createSequentialGroup()
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(btn1)
.addComponent(btn2)
.addComponent(btn3)
)
.addComponent(btn4)
);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
frame.pack(); // هنا جعلنا حجم النافذة يناسب حجم المحتوى
frame.setVisible(true); // هنا جعلنا النافذة مرئية
}
}
ستظهر لك النافذة التالية عند التشغيل.