Swingطريقة ترتيب محتوى الـ JFrame بواسطة الكلاس GridBagLayout
المثال التالي يعلمك طريقة ترتيب محتوى الـ Frame بواسطة الكلاس GridBagLayout و الكلاس GridBagConstraints.
مثال
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("GridBagLayout demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
frame.setSize(300, 300); // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 300
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
frame.setLayout(new GridBagLayout()); // لترتيب الأشياء التي نضيفها بداخلها GridBagLayout هنا جعلنا النافذة تستخدم الـ
// هنا قمنا بتعريف 10 أزرار
JButton b1 = new JButton("1");
JButton b2 = new JButton("2");
JButton b3 = new JButton("3");
JButton b4 = new JButton("4");
JButton b5 = new JButton("5");
JButton b6 = new JButton("6");
JButton b7 = new JButton("7");
JButton b8 = new JButton("8");
JButton b9 = new JButton("9");
JButton b10 = new JButton("10");
// لتحديد مكان كل شيء بداخل النافذة GridBagConstraints هنا قمنا بتعريف كائن من الكلاس
GridBagConstraints gbc = new GridBagConstraints();
// يتأثر بكامل المساحة المتوفرة من النافذة بالإتجاهين الأفقي و العامودي gbc هنا جعلنا الـ
gbc.fill = GridBagConstraints.BOTH;
// هنا جعلنا نسبة الجذب الأفقية و العامودية متساوي حتى يكون المحتوى دائماً مطابق لحجم الشاشة
gbc.weightx = 1;
gbc.weighty = 1;
// هنا أضفنا أول ثلاث أزرار في أول سطر
frame.add(b1, gbc);
frame.add(b2, gbc);
frame.add(b3, gbc);
// هنا أضفنا الزر الرابع كآخر زر في السطر الأول
gbc.gridwidth = GridBagConstraints.REMAINDER;
frame.add(b4, gbc);
// هنا أضفنا الزر الخامس لوحده و الذي بدوره سيظهر على سطر جديد و الذي سيكون السطر الثاني هنا
frame.add(b5, gbc);
// هنا أضفنا الزر السادس نسبة للزر الخامس, أي سيوضع بعد الزر الخامس و على سطر جديد و الذي سيكون السطر الثالث هنا
gbc.gridwidth = GridBagConstraints.RELATIVE;
frame.add(b6, gbc);
// هنا أضفنا الزر السابع كآخر زر في نفس السطر الموجود فيه الزر السادس
gbc.gridwidth = GridBagConstraints.REMAINDER;
frame.add(b7, gbc);
// هنا أضفنا الزر الثامن و الذي بدوره سيظهر على سطر جديد و الذي سيكون السطر الرابع هنا
gbc.gridwidth = 1;
gbc.gridheight = 2; // هنا جعلناه طوله مضاعف, أي سيظهر أيضاً على السطر الخامس
frame.add(b8, gbc);
// هنا أضفنا الزر التاسع كآخر زر في نفس السطر الموجود فيه الزر الثامن
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.gridheight = 1;
frame.add(b9, gbc);
// هنا أضفنا الزر العاشر كآخر زر في نفس السطر الموجود فيه الزر التاسع
frame.add(b10, gbc);
// هنا جعلنا النافذة مرئية
frame.setVisible(true);
}
}
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("GridBagLayout demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
frame.setSize(300, 300); // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 300
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
frame.setLayout(new GridBagLayout()); // لترتيب الأشياء التي نضيفها بداخلها GridBagLayout هنا جعلنا النافذة تستخدم الـ
// هنا قمنا بتعريف 10 أزرار
JButton b1 = new JButton("1");
JButton b2 = new JButton("2");
JButton b3 = new JButton("3");
JButton b4 = new JButton("4");
JButton b5 = new JButton("5");
JButton b6 = new JButton("6");
JButton b7 = new JButton("7");
JButton b8 = new JButton("8");
JButton b9 = new JButton("9");
JButton b10 = new JButton("10");
// لتحديد مكان كل شيء بداخل النافذة GridBagConstraints هنا قمنا بتعريف كائن من الكلاس
GridBagConstraints gbc = new GridBagConstraints();
// يتأثر بكامل المساحة المتوفرة من النافذة بالإتجاهين الأفقي و العامودي gbc هنا جعلنا الـ
gbc.fill = GridBagConstraints.BOTH;
// هنا جعلنا نسبة الجذب الأفقية و العامودية متساوي حتى يكون المحتوى دائماً مطابق لحجم الشاشة
gbc.weightx = 1;
gbc.weighty = 1;
// هنا أضفنا أول ثلاث أزرار في أول سطر
frame.add(b1, gbc);
frame.add(b2, gbc);
frame.add(b3, gbc);
// هنا أضفنا الزر الرابع كآخر زر في السطر الأول
gbc.gridwidth = GridBagConstraints.REMAINDER;
frame.add(b4, gbc);
// هنا أضفنا الزر الخامس لوحده و الذي بدوره سيظهر على سطر جديد و الذي سيكون السطر الثاني هنا
frame.add(b5, gbc);
// هنا أضفنا الزر السادس نسبة للزر الخامس, أي سيوضع بعد الزر الخامس و على سطر جديد و الذي سيكون السطر الثالث هنا
gbc.gridwidth = GridBagConstraints.RELATIVE;
frame.add(b6, gbc);
// هنا أضفنا الزر السابع كآخر زر في نفس السطر الموجود فيه الزر السادس
gbc.gridwidth = GridBagConstraints.REMAINDER;
frame.add(b7, gbc);
// هنا أضفنا الزر الثامن و الذي بدوره سيظهر على سطر جديد و الذي سيكون السطر الرابع هنا
gbc.gridwidth = 1;
gbc.gridheight = 2; // هنا جعلناه طوله مضاعف, أي سيظهر أيضاً على السطر الخامس
frame.add(b8, gbc);
// هنا أضفنا الزر التاسع كآخر زر في نفس السطر الموجود فيه الزر الثامن
gbc.gridwidth = GridBagConstraints.REMAINDER;
gbc.gridheight = 1;
frame.add(b9, gbc);
// هنا أضفنا الزر العاشر كآخر زر في نفس السطر الموجود فيه الزر التاسع
frame.add(b10, gbc);
// هنا جعلنا النافذة مرئية
frame.setVisible(true);
}
}
ستظهر لك النافذة التالية عند التشغيل.