Layouts
parent
f6d6a3c2d7
commit
a89a671daa
|
@ -0,0 +1,46 @@
|
|||
package GUIAnwendungen;
|
||||
/* GridLayout
|
||||
* - يستخدم لترتيب الأشياء التي نضيفها كجدول يتألف من أسطر و أعمدة متساوية الحجم.
|
||||
*/
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JButton;
|
||||
import java.awt.GridLayout;
|
||||
public class Gridlayout {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
JFrame frame = new JFrame("GridLayout demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من
|
||||
// الكلاس
|
||||
frame.setSize(300, 300); // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 300
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
|
||||
frame.setLayout(new GridLayout(3, 3,10,10)); // لترتيب الأشياء التي نضيفها بداخلها GridLayout هنا جعلنا
|
||||
// النافذة تستخدم الـ
|
||||
|
||||
// هنا قمنا بتعريف 9 أزرار
|
||||
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");
|
||||
|
||||
// هنا قمنا بإضافة الأزرار في النافذة
|
||||
frame.add(b1);
|
||||
frame.add(b2);
|
||||
frame.add(b3);
|
||||
frame.add(b4);
|
||||
frame.add(b5);
|
||||
frame.add(b6);
|
||||
frame.add(b7);
|
||||
frame.add(b8);
|
||||
frame.add(b9);
|
||||
|
||||
// هنا جعلنا النافذة مرئية
|
||||
frame.setVisible(true);
|
||||
|
||||
}
|
||||
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,40 @@
|
|||
package GUIAnwendungen.Layouts;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JButton;
|
||||
import java.awt.BorderLayout;
|
||||
|
||||
public class Borderlayout {
|
||||
/* BorderLayout:
|
||||
* - يستخدم لترتيب الأشياء التي نضيفها في الشمال, الجنوب, الشرق, الغرب أو الوسط.
|
||||
* - يقسم النافذة أو الحاوية إلى 5 أقسام
|
||||
* -
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
|
||||
JFrame frame = new JFrame("BorderLayout demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن
|
||||
// من الكلاس
|
||||
frame.setSize(400, 300); // هنا قمنا بتحديد حجم النافذة. عرضها 400 و طولها 300
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
|
||||
frame.setLayout(new BorderLayout(5, 5)); // لترتيب الأشياء التي نضيفها بداخلها BorderLayout هنا جعلنا النافذة
|
||||
// تستخدم الـ
|
||||
|
||||
// هنا قمنا بتعريف 5 أزرار
|
||||
JButton b1 = new JButton("North");
|
||||
JButton b2 = new JButton("South");
|
||||
JButton b3 = new JButton("East");
|
||||
JButton b4 = new JButton("West");
|
||||
JButton b5 = new JButton("Center");
|
||||
|
||||
// هنا وضع كل زر في مكان مختلف في النافذة
|
||||
frame.add(b1, BorderLayout.NORTH);
|
||||
frame.add(b2, BorderLayout.SOUTH);
|
||||
frame.add(b3, BorderLayout.EAST);
|
||||
frame.add(b4, BorderLayout.WEST);
|
||||
frame.add(b5, BorderLayout.CENTER);
|
||||
|
||||
// هنا جعلنا النافذة مرئية
|
||||
frame.setVisible(true);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,125 @@
|
|||
package GUIAnwendungen.Layouts;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import java.awt.CardLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Container;
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
public class Cardlayout {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
JFrame frame = new JFrame("CardLayout demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
|
||||
frame.setSize(400, 200); // هنا قمنا بتحديد حجم النافذة. عرضها 400 و طولها 200
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
|
||||
frame.setLayout(new GridBagLayout()); // لترتيب الأشياء التي نضيفها بداخلها GridBagLayout هنا جعلنا النافذة تستخدم الـ
|
||||
|
||||
// اليمنى Panel اليسرى و الـ Panel هنا قمنا بتعريف الـ
|
||||
JPanel panel_L = new JPanel();
|
||||
JPanel panel_R = new JPanel();
|
||||
|
||||
// في النافذة panel_R و الـ panel_L لتحديد مكان و حجم الـ GridBagConstraints هنا قمنا بتعريف كائن من الكلاس
|
||||
GridBagConstraints gbc = new GridBagConstraints();
|
||||
|
||||
// يتأثر بكامل المساحة المتوفرة من النافذة بالإتجاهين الأفقي و العامودي gbc هنا جعلنا الـ
|
||||
gbc.fill = GridBagConstraints.BOTH;
|
||||
|
||||
// هنا جعلنا نسبة الجذب الأفقية و العامودية متساوي حتى يكون المحتوى دائماً مطابق لحجم الشاشة
|
||||
gbc.weightx = 1;
|
||||
gbc.weighty = 1;
|
||||
|
||||
// في يسار النافذة panel_L هنا أضفنا الـ
|
||||
frame.add(panel_L, gbc);
|
||||
|
||||
// في يمين النافذة مع إعطائها حجم جذب أكبر بعشر مرات panel_R هنا أضفنا الـ
|
||||
gbc.weightx = 10;
|
||||
frame.add(panel_R, gbc);
|
||||
|
||||
// إلى 4 أقسام بالطول panel_L هنا قمنا بتقسيم الـ
|
||||
panel_L.setLayout(new GridLayout(4, 1));
|
||||
|
||||
// هنا قمنا بتعريف 4 أزرار
|
||||
JButton next = new JButton("Next");
|
||||
JButton previous = new JButton("Previous");
|
||||
JButton first = new JButton("First");
|
||||
JButton last = new JButton("Last");
|
||||
|
||||
// panel_L هنا قمنا بإضافة الأزرار في الـ
|
||||
panel_L.add(next);
|
||||
panel_L.add(previous);
|
||||
panel_L.add(first);
|
||||
panel_L.add(last);
|
||||
|
||||
// // لترتيب الأشياء التي نضيفها بداخلها فوق بعضها البعض CardLayout تستخدم الـ panel_R هنا جعلنا الـ
|
||||
CardLayout card = new CardLayout();
|
||||
Container container = panel_R;
|
||||
container.setLayout(card);
|
||||
|
||||
// Panels هنا قمنا بتعريف 4
|
||||
JPanel p1 = new JPanel();
|
||||
JPanel p2 = new JPanel();
|
||||
JPanel p3 = new JPanel();
|
||||
JPanel p4 = new JPanel();
|
||||
|
||||
// منهم Panel هنا قمنا بإعطاء لون خلفية مختلف لكل
|
||||
p1.setBackground(Color.white);
|
||||
p2.setBackground(Color.yellow);
|
||||
p3.setBackground(Color.cyan);
|
||||
p4.setBackground(Color.green);
|
||||
|
||||
// منهم Panel هنا قمنا بإضافة عنوان في كل
|
||||
p1.add(new JLabel("Panel 1"));
|
||||
p2.add(new JLabel("Panel 2"));
|
||||
p3.add(new JLabel("Panel 3"));
|
||||
p4.add(new JLabel("Panel 4"));
|
||||
|
||||
// panel_R الأربعة في الـ Panels هنا قمنا بإضافة الـ
|
||||
panel_R.add(p1);
|
||||
panel_R.add(p2);
|
||||
panel_R.add(p3);
|
||||
panel_R.add(p4);
|
||||
|
||||
// التالية Panel سيتم عرض الـ next هنا قلنا أنه عند النقر على الزر
|
||||
next.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
card.next(container);
|
||||
}
|
||||
});
|
||||
|
||||
// السابقة Panel سيتم عرض الـ previous هنا قلنا أنه عند النقر على الزر
|
||||
previous.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
card.previous(container);
|
||||
}
|
||||
});
|
||||
|
||||
// panel_R قمنا بإضافتها في الـ Panel سيتم عرض أول first هنا قلنا أنه عند النقر على الزر
|
||||
first.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
card.first(container);
|
||||
}
|
||||
});
|
||||
|
||||
// panel_R قمنا بإضافتها في الـ Panel سيتم عرض آخر last هنا قلنا أنه عند النقر على الزر
|
||||
last.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
card.last(container);
|
||||
}
|
||||
});
|
||||
|
||||
// هنا جعلنا النافذة مرئية
|
||||
frame.setVisible(true);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package GUIAnwendungen.Layouts;
|
||||
/*FlowLayout
|
||||
* - يستخدم لترتيب الأشياء التي نضيفها وراء بعضها البعض
|
||||
*/
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JButton;
|
||||
import java.awt.FlowLayout;
|
||||
public class Flowlayout {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
JFrame frame = new JFrame("FlowLayout demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من
|
||||
// الكلاس
|
||||
frame.setSize(350, 200); // هنا قمنا بتحديد حجم النافذة. عرضها 350 و طولها 200
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
|
||||
frame.setLayout(new FlowLayout(FlowLayout.LEFT)); // لترتيب الأشياء التي نضيفها بداخلها FlowLayout هنا جعلنا
|
||||
// النافذة تستخدم الـ
|
||||
|
||||
// هنا قمنا بتعريف 5 أزرار
|
||||
JButton b1 = new JButton("Button 1");
|
||||
JButton b2 = new JButton("Button 2");
|
||||
JButton b3 = new JButton("Button 3");
|
||||
JButton b4 = new JButton("Button 4");
|
||||
JButton b5 = new JButton("Button 5");
|
||||
|
||||
// هنا قمنا بإضافة الأزرار في النافذة
|
||||
frame.add(b1);
|
||||
frame.add(b2);
|
||||
frame.add(b3);
|
||||
frame.add(b4);
|
||||
frame.add(b5);
|
||||
|
||||
// هنا جعلنا النافذة مرئية
|
||||
frame.setVisible(true);
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
package GUIAnwendungen.Layouts;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JButton;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.awt.GridBagConstraints;
|
||||
|
||||
/* GridBagLayout:
|
||||
* - يستخدم لترتيب الأشياء التي نضيفها كجدول يتألف من أسطر و أعمدة يمكن تعديل أحجامها و مكان ظهورها.
|
||||
* - هنا يجب أن يتم ربط كل شيء يتم إضافته بكائن من الكلاس GridBagConstraints
|
||||
*/
|
||||
public class GridBaglayout {
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
package GUIAnwendungen.Layouts;
|
||||
/* GridLayout
|
||||
* - يستخدم لترتيب الأشياء التي نضيفها كجدول يتألف من أسطر و أعمدة متساوية الحجم.
|
||||
*/
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JButton;
|
||||
import java.awt.GridLayout;
|
||||
public class Gridlayout {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
JFrame frame = new JFrame("GridLayout demo"); // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من
|
||||
// الكلاس
|
||||
frame.setSize(300, 300); // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 300
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
|
||||
frame.setLayout(new GridLayout(3, 3,10,10)); // لترتيب الأشياء التي نضيفها بداخلها GridLayout هنا جعلنا
|
||||
// النافذة تستخدم الـ
|
||||
|
||||
// هنا قمنا بتعريف 9 أزرار
|
||||
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");
|
||||
|
||||
// هنا قمنا بإضافة الأزرار في النافذة
|
||||
frame.add(b1);
|
||||
frame.add(b2);
|
||||
frame.add(b3);
|
||||
frame.add(b4);
|
||||
frame.add(b5);
|
||||
frame.add(b6);
|
||||
frame.add(b7);
|
||||
frame.add(b8);
|
||||
frame.add(b9);
|
||||
|
||||
// هنا جعلنا النافذة مرئية
|
||||
frame.setVisible(true);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
package GUIAnwendungen.Layouts;
|
||||
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 Grouplayout {
|
||||
|
||||
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); // هنا جعلنا النافذة مرئية
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue