Swing - الكلاس JPanel

Java Swing الكلاس JPanel

مقدمة Swing - الكلاس JPanel

الكلاس JPanel يستخدم لإضافة (Panel) في واجهة المستخدم.
الـ Panel عبارة عن حاوية, أي مجرد مربع يمكنك وضع الأشياء بداخله و هو يستخدم لتحسين التصميم أكثر.

إفتراضياً, الـ Panel لا لون و لا حدود لها. لكنك تستطيع إعطائها لون و حدود و إظهارها بالشكل الذي تريد.
كما أنك تستطيع وضع Panel بداخل Panel.

بالإضافة إلى ذلك, الـ Panel تستخدم الـ Flow Layout Manager لتحديد الطريقة التي سيتم فيها ترتيب الأشياء التي ستوضع بداخلها.
و يمكنك طبعاً تحديد الـ Layout Manager الذي ستستخدمه حتى يناسب البرنامج الذي تقوم ببنائه.

الـ Layout Manager يحدد طريقة عرض محتوى الـ Layout, أي طريقة ترتيب الأشياء الموضوعة بداخلها مهما كان حجمها.


معلومة تقنية

إفتراضياً, الـ Panel تستخدم ما يسمى Double Buffer لعرض الشيء الموجود بداخلها.
الذي يهمك في هذا الموضوع أنك في حال كنت تنوي بناء لعبة, برنامج رسم, برنامج لمعالجة الصور إلخ..
قد تلاحظ أن الشيء الذي وضعته في الـ Panel يتطلب مدة من الوقت حتى يظهر, بمعنى أنه يظهر ببطئ و كأنه يعلق قليلاً.

لذلك إذا كنت تنوي بناء أي برنامج فيه رسومات تتبدل بسرعة ستضطر إلى التعامل مع الـ Buffer لإظهار ما وضعته بالـ Panel بشكل ممتاز لا يظهر أي شكل من أشكال التعليق أمام المستخدم.

بالنسبة للـ Buffer لا تقلق حتى لو لم تفهم أي كلمة لأنك لن تحتاج إلى التعامل معها في هذا الدرس.
أما بالنسبة للـ Layout Manager ستجد شرح جميع الكلاسات التي تسمح لك بتحديد طريقة عرض محتوى الـ Panel بالعودة للدرس.


بنا - الكلاس JPanel

public class JPanel
extends JComponent
implements Accessible
	

كونستركتورات الكلاس JPanel

الجدول التالي يحتوي على أهم الكونستركتورات الموجودة في الكلاس JPanel.

الكونستركتور مع تعريفه
public JPanel() ينشئ كائن من الكلاس JPanel يمثل Panel.
public JPanel(LayoutManager layout) ينشئ كائن من الكلاس JPanel يمثل Panel تستخدم Layout Manager محدد.
مكان الباراميتر layout نضع كائن من إحدى الكلاسات التي تنفذ الإنترفيس LayoutManager.

 طريقة إنشاء JPanel

المثال التالي يعلمك طريقة إنشاء كائن من الكلاس JPanel و إضافته في النافذة.


مثال يعلمك طريقة إنشاء كائن من الكلاس JPanel و إضافته في النافذة.

Main.java
                    import javax.swing.JFrame;
                    import javax.swing.JPanel;
                    import java.awt.Color;

                    public class Main {

                    public static void main(String[] args) {

                    JFrame frame = new JFrame("JPanel demo");               // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
                    frame.setSize(300, 240);                                // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 240
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
                    frame.setLayout(null);                                  // في النافذة بنفسنا Panel لذلك سنقوم بتحديد مكان الـ Layout Manager أي لم نستخدم أي null هنا وضعنا

                    JPanel panel = new JPanel();                            // Panel أي قمنا بإنشاء JPanel هنا أنشأنا كائن من الكلاس
                    panel.setBackground(Color.gray);                        // رمادي Panel هنا جعلنا لون خلفية الـ
                    panel.setBounds(50, 50, 180, 110);                      // frame في الـ Panel هنا قمنا بتحديد حجم و موقع الـ

                    frame.add(panel);                                       // frame في الـ Panel هنا أضفنا الـ

                    frame.setVisible(true);                                 // هنا جعلنا النافذة مرئية

                    }

                    }
                  

ستظهر لك النافذة التالية عند التشغيل.

طريقة إضافة JPanel في ال JFrame في جافا

 طريقة إضافة أي شيء في الـ JPanel

المثال التالي يعلمك طريقة إضافة أي شيء في الـ Panel.


مثال على طريقة إضافة أي شيء في الـ Panel.

Main.java
                    import javax.swing.JFrame;
                    import javax.swing.JPanel;
                    import javax.swing.JButton;
                    import java.awt.Color;

                    public class Main {

                    public static void main(String[] args) {

                    // هنا قمنا بإنشاء النافذة مع تحديد بعض خصائصها
                    JFrame frame = new JFrame("JPanel demo");
                    frame.setSize(300, 240);
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setLayout(null);

                    // Frame لونه رمادي و حددنا موقعه بداخل الـ Panel هنا قمنا بتعريف
                    JPanel panel = new JPanel();
                    panel.setBackground(Color.gray);
                    panel.setBounds(50, 50, 180, 110);

                    // Frame في الـ Panel هنا وضعنا الـ
                    frame.add(panel);

                    // Buttons هنا قمنا بتعريف 4
                    JButton button1 = new JButton("Button 1");
                    JButton button2 = new JButton("Button 2");
                    JButton button3 = new JButton("Button 3");
                    JButton button4 = new JButton("Button 4");

                    // منهم Button هنا قمنا بإعطاء لون خلفية مختلف لكل
                    button1.setBackground(Color.orange);
                    button2.setBackground(Color.yellow);
                    button3.setBackground(Color.green);
                    button4.setBackground(Color.pink);

                    // Panel في الـ Buttons هنا قمنا بوضع الـ
                    panel.add(button1);
                    panel.add(button2);
                    panel.add(button3);
                    panel.add(button4);

                    // مرئية Frame هنا جعلنا الـ
                    frame.setVisible(true);

                    }

                    }
                  

ستظهر لك النافذة التالية عند التشغيل.

طريقة إضافة أشياء component في ال JPanel في جافا

 طريقة إظهار حدود للـ JPanel

المثال التالي يعلمك طريقة إظهار حدود للـ Panel و تحديد أحجام و أمكان الأشياء التي نضيفها بداخلها يدوياً.


مثال يشرح إظهار حدود للـ Panel و تحديد أحجام و أمكان الأشياء التي نضيفها بداخلها يدوياً.

Main.java
                    import javax.swing.JFrame;
                    import javax.swing.JPanel;
                    import javax.swing.BorderFactory;
                    import javax.swing.JLabel;
                    import javax.swing.JTextField;
                    import javax.swing.JComboBox;
                    import javax.swing.JButton;

                    public class Main {

                    public static void main(String[] args) {

                    // هنا قمنا بإنشاء النافذة مع تحديد بعض خصائصها
                    JFrame frame = new JFrame("JPanel demo");
                    frame.setSize(400, 400);
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setLayout(null);

                    // و وضعنا له حدود و عنوان Layout Manager لا يستخدم أي Panel هنا قمنا بتعريف
                    JPanel panel = new JPanel(null);
                    panel.setBorder(BorderFactory.createTitledBorder("Add User"));
                    panel.setBounds(50, 30, 290, 300);

                    // Frame في الـ Panel هنا وضعنا الـ
                    frame.add(panel);

                    // Panel هنا قمنا بتعريف جميع الأشياء التي سنضعها في الـ
                    JLabel label1 = new JLabel("First Name");
                    JLabel label2 = new JLabel("Last Name");
                    JLabel label3 = new JLabel("Father Name");
                    JLabel label4 = new JLabel("Mother Name");
                    JLabel label5 = new JLabel("Gender");
                    JTextField field1 = new JTextField();
                    JTextField field2 = new JTextField();
                    JTextField field3 = new JTextField();
                    JTextField field4 = new JTextField();
                    JComboBox comboBox = new JComboBox(new String[]{ "Male", "Female"});
                    JButton button = new JButton("Add User");

                    // Panel هنا قمنا بتحديد مكان كل شيء سنضيفه بداخل الـ
                    label1.setBounds(30, 50, 100, 25);
                    label2.setBounds(30, 90, 100, 25);
                    label3.setBounds(30, 130, 100, 25);
                    label4.setBounds(30, 170, 100, 25);
                    label5.setBounds(30, 210, 100, 25);
                    field1.setBounds(120, 50, 130, 25);
                    field2.setBounds(120, 90, 130, 25);
                    field3.setBounds(120, 130, 130, 25);
                    field4.setBounds(120, 170, 130, 25);
                    comboBox.setBounds(120, 210, 130, 25);
                    button.setBounds(120, 255, 130, 25);

                    // Panel في الـ Buttons هنا قمنا بوضع الـ
                    panel.add(label1);
                    panel.add(label2);
                    panel.add(label3);
                    panel.add(label4);
                    panel.add(label5);
                    panel.add(field1);
                    panel.add(field2);
                    panel.add(field3);
                    panel.add(field4);
                    panel.add(comboBox);
                    panel.add(button);

                    // مرئية Frame هنا جعلنا الـ
                    frame.setVisible(true);

                    }

                    }
                  

ستظهر لك النافذة التالية عند التشغيل.

طريقة إظهار حدود لل JPanel في جافا

دورة تعلم الجافا Swing