Swing - الكلاس JDialog

Java Swing الكلاس JDialog

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

الكلاس JDialog يستخدم لإضافة نافذة مخصصة (Custom Dialog).
ميزة هذه النافذة أنك تستطيع وضع أي شيء بداخلها.


بنا Swing - الكلاس JDialog

public class JDialog
extends Dialog
implements WindowConstants, Accessible, RootPaneContainer
	

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

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

الكونستركتور مع تعريفه
public JDialog() ينشئ كائن من الكلاس JDialog يمثل Dialog ليس له عنوان و بدون تحديد الـ Frame التي سيظهر بداخلها.
public JDialog(Frame owner) ينشئ كائن من الكلاس JDialog يمثل Dialog ليس له عنوان و يظهر بداخل Frame محددة.
مكان الباراميتر owner نضع الـ Frame التي نريده أن يظهر بداخلها.
public JDialog(Frame owner, String title) ينشئ كائن من الكلاس JDialog يمثل Dialog له عنوان و يظهر بداخل Frame محددة.

  • مكان الباراميتر owner نضع الـ Frame التي نريده أن يظهر بداخلها.

  • مكان الباراميتر title نضع نص يمثل عنوان الـ Dialog الذي سيظهر.

public JDialog(Frame owner, boolean modal) ينشئ كائن من الكلاس JDialog يمثل Dialog ليس له عنوان و يظهر بداخل Frame محددة.
هنا يمكنك تحديد إذا كنت تريد جعل المستخدم قادر على التعامل مع الـ Frame و الـ Dialog في نفس الوقت.

  • مكان الباراميتر owner نضع الـ Frame التي نريده أن تظهر بداخلها.

  • مكان الباراميتر modal نضع false في حال أردنا جعل المستخدم قادر على التعامل مع الـ Frame و الـ Dialog في نفس الوقت.
    &nbsp &nbsp و نضع true لجعله قادر على التعامل مع الـ Dialog فقط عندما يكون ظاهراً.

public JDialog(Frame owner, String title, boolean modal) ينشئ كائن من الكلاس JDialog يمثل Dialog له عنوان و يظهر بداخل Frame محددة.
هنا يمكنك تحديد إذا كنت تريد جعل المستخدم قادر على التعامل مع الـ Frame و الـ Dialog في نفس الوقت.

  • مكان الباراميتر owner نضع الـ Frame التي نريده أن تظهر بداخلها.

  • مكان الباراميتر title نضع نص يمثل عنوان الـ Dialog الذي سيظهر.

  • مكان الباراميتر modal نضع false في حال أردنا جعل المستخدم قادر على التعامل مع الـ Frame و الـ Dialog في نفس الوقت.
    &nbsp &nbsp و نضع true لجعله قادر على التعامل مع الـ Dialog فقط عندما يكون ظاهراً.

 طريقة إنشاء JDialog و إظهاره عند النقر على زر

المثال التالي يعلمك طريقة إنشاء كلاس خاص يمثل Dialog له محتوى بسيط.
سنقوم بإظهار الـ Dialog عند النقر على زر Open Dialog في الـ Frame.


مثال يعلمك طريقة إنشاء كلاس خاص يمثل Dialog له محتوى بسيط.

CustomDialog.java
                    import javax.swing.JFrame;
                    import javax.swing.JDialog;
                    import javax.swing.JLabel;
                    import javax.swing.JButton;
                    import java.awt.event.ActionListener;
                    import java.awt.event.ActionEvent;

                    public class CustomDialog {

                    // JButton و JLabel و JDialog هذا الكلاس يحتوي على
                    private JDialog dialog;
                    private final JLabel label;
                    private final JButton button;

                    // التي نريده أن يظهر بداخلها Frame هنا قلنا أنه عند إنشاء كائن من هذا الكلاس يجب أن نمرر له الـ
                    public CustomDialog(JFrame f) {

                    // Dialog و تعريف الأشياء التي سنضيفها في الـ Frame بالـ Dialog هنا قمنا بربط الـ
                    dialog = new JDialog(f);
                    label = new JLabel("This is a custom dialog");
                    button = new JButton("close");

                    // Dialog هنا قمنا بتحديد موقع و جميع الأشياء التي سنضيفها في الـ
                    label.setBounds(40, 50, 150, 30);
                    button.setBounds(210, 50, 70, 30);

                    // Dialog هنا قمنا بتحديد بعض خصائص الـ
                    dialog.setLocationRelativeTo(f);
                    dialog.setLayout(null);
                    dialog.setSize(340, 170);
                    dialog.setTitle("Custom Dialog");
                    dialog.setModal(false);

                    // Dialog بداخل الـ button و الـ label هنا قمنا بوضع الـ
                    dialog.add(label);
                    dialog.add(button);

                    // button عند النقر على الـ Dialog هنا قلنا أنه سيتم إخفاء الـ
                    button.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                    dialog.setVisible(false);
                    }
                    });

                    }

                    // Dialog هنا قمنا ببناء دالة لإظهار الـ
                    public void show() {
                    dialog.setVisible(true);
                    }

                    // Dialog هنا قمنا ببناء دالة لإخفاء الـ
                    public void hide() {
                    dialog.setVisible(false);
                    }

                    }
                  

Main.java
                    import javax.swing.JFrame;
                    import javax.swing.JButton;
                    import java.awt.event.ActionListener;
                    import java.awt.event.ActionEvent;

                    public class Main {

                    public static void main(String[] args) {

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

                    // Panels هنا قمنا بتعريف ثلاثة
                    JButton button = new JButton("Open Dialog");
                    button.setBounds(40, 80, 130, 30);
                    frame.add(button);

                    // منهم Panel هنا قمنا بإعطاء لون خلفية لكل
                    CustomDialog dialog = new CustomDialog(frame);

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

                    // button عند النقر على الـ Input Dialog هنا قلنا أنه سيتم إظهار
                    button.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                    dialog.show();
                    }
                    });

                    }

                    }
                  

عند النقر على زر Open Dialog سيظهر لك الـ Dialog كما في الصورة التالية.

طريقة إنشاء JDialog و جعله يظهر عند النقر على زر في جافا

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