Swingطريقة إنشاء واجهة تسجيل دخول بواسطة الكلاس GroupLayout
المثال التالي يعلمك طريقة إنشاء واجهة تسجيل دخول بواسطة الكلاس GroupLayout.
مثال
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
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("Login");
// لترتيب الأشياء التي نضيفها بداخلها GroupLayout هنا جعلنا النافذة تستخدم الـ
Container container = frame.getContentPane();
GroupLayout groupLayout = new GroupLayout(container);
container.setLayout(groupLayout);
// هنا قمنا بإضافة هوامش بين النافذة و المجموعات و بين جميع الأشياء التي سنضيفها في المجموعات
groupLayout.setAutoCreateGaps(true);
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()
// في مجموعة متوازية أفقياً label_2 و الـ label_1 هنا وضعنا الـ
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(label_1)
.addComponent(label_2)
)
// في مجموعة متوازية أفقياً textField_2 و الـ textField_1 هنا وضعنا الـ
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(textField_1)
.addComponent(textField_2)
// في مجموعة متتالية و وضعناها مع المجموعة الثانية button_2 و الـ button_1 هنا وضعنا الـ
.addGroup(groupLayout.createSequentialGroup()
.addComponent(button_1)
.addComponent(button_2)
)
)
);
// هنا قمنا بتعريف ثلاث مجموعات عامودية, لوضع المحتوى على ثلاث أسطر
groupLayout.setVerticalGroup(
groupLayout.createSequentialGroup()
// في مجموعة متوازية عامودياً و بالتالي سيظهروا في السطر الأول textField_1 و الـ label_1 هنا وضعنا الـ
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label_1)
.addComponent(textField_1)
)
// في مجموعة متوازية عامودياً و بالتالي سيظهروا في السطر الثاني textField_2 و الـ label_2 هنا وضعنا الـ
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label_2)
.addComponent(textField_2)
)
// في مجموعة متوازية عامودياً و بالتالي سيظهروا في السطر الثالث button_2 و الـ button_1 هنا وضعنا الـ
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(button_1)
.addComponent(button_2)
)
);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
frame.pack(); // هنا جعلنا حجم النافذة يناسب حجم المحتوى
frame.setVisible(true); // هنا جعلنا النافذة مرئية
}
}
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
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("Login");
// لترتيب الأشياء التي نضيفها بداخلها GroupLayout هنا جعلنا النافذة تستخدم الـ
Container container = frame.getContentPane();
GroupLayout groupLayout = new GroupLayout(container);
container.setLayout(groupLayout);
// هنا قمنا بإضافة هوامش بين النافذة و المجموعات و بين جميع الأشياء التي سنضيفها في المجموعات
groupLayout.setAutoCreateGaps(true);
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()
// في مجموعة متوازية أفقياً label_2 و الـ label_1 هنا وضعنا الـ
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(label_1)
.addComponent(label_2)
)
// في مجموعة متوازية أفقياً textField_2 و الـ textField_1 هنا وضعنا الـ
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(textField_1)
.addComponent(textField_2)
// في مجموعة متتالية و وضعناها مع المجموعة الثانية button_2 و الـ button_1 هنا وضعنا الـ
.addGroup(groupLayout.createSequentialGroup()
.addComponent(button_1)
.addComponent(button_2)
)
)
);
// هنا قمنا بتعريف ثلاث مجموعات عامودية, لوضع المحتوى على ثلاث أسطر
groupLayout.setVerticalGroup(
groupLayout.createSequentialGroup()
// في مجموعة متوازية عامودياً و بالتالي سيظهروا في السطر الأول textField_1 و الـ label_1 هنا وضعنا الـ
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label_1)
.addComponent(textField_1)
)
// في مجموعة متوازية عامودياً و بالتالي سيظهروا في السطر الثاني textField_2 و الـ label_2 هنا وضعنا الـ
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label_2)
.addComponent(textField_2)
)
// في مجموعة متوازية عامودياً و بالتالي سيظهروا في السطر الثالث button_2 و الـ button_1 هنا وضعنا الـ
.addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(button_1)
.addComponent(button_2)
)
);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
frame.pack(); // هنا جعلنا حجم النافذة يناسب حجم المحتوى
frame.setVisible(true); // هنا جعلنا النافذة مرئية
}
}
ستظهر لك النافذة التالية عند التشغيل.