Swing - الكلاس JOptionPane

Java Swing الكلاس JOptionPane

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

الكلاس JOptionPane يستخدم لإظهار نافذة خيارات (Option Pane) أمام للمستخدم لعدة أسباب:

  1. لتحذيره أو إعلامه بشيء ما.

  2. لسؤاله إذا كان موافقاً على أمر ما أم لا.

  3. ليطلب منه إدخال قيمة.


الكلاس JOptionPane يوفر دوال كثيرة يمكن إستخدامها للحصول Message Dialog, Confirm Dialog و Input Dialog.


مصطلحات تقنية

المصطلح معناه
Message Dialog عبارة عن نافذة منبثقة تستخدم لإعلام المستخدم بشيء ما.
نحصل على Message Dialog بواسطة الدالة showMessageDialog().
Confirm Dialog عبارة عن نافذة منبثقة تستخدم لسؤال المستخدم إذا كان موافقاً على شيء ما أم لا.
نحصل على Confirm Dialog بواسطة الدالة showConfirmDialog().
Input Dialog عبارة عن نافذة منبثقة تستخدم لجعل المستخدم يقوم بإدخال أو إختيار قيمة ما
نحصل على Input Dialog بواسطة الدالة showInputDialog().

معلومة تقنية

الـ Option Pane عبارة عن Internal Frame لأنها عبارة عن نافذة تظهر بداخل النافذة التي تستدعى منها.


بنا - الكلاس JOptionPane

public class JOptionPane
extends JComponent
implements Accessible
	

ثوابت الكلاس JOptionPane

الجدول التالي يحتوي على ثوابت الكلاس JOptionPane المخصصة لتحديد أيقونة الـ Option Pane.

الثابت إستخدامه الأيقونة التي يظهرها
ERROR_MESSAGE يظهر أيقونة تلفت نظر المستخدم إلى وجود خطأ ما.
INFORMATION_MESSAGE يظهر أيقونة تلفت نظر المستخدم لقراءة معلومة ما.
WARNING_MESSAGE يظهر أيقونة تلفت نظر المستخدم لوجود تحذير ما.
QUESTION_MESSAGE يظهر أيقونة تلفت نظر المستخدم لسؤاله عن شيئاً ما.
PLAIN_MESSAGE يستخدم لعدم إظهار أي أيقونة.

الجدول التالي يحتوي على ثوابت الكلاس JOptionPane المخصصة لتحديد الأزرار التي ستوجد في الـ Option Pane و تحديداً في الـ Confirm Dialog.

الثابت إستخدامه الأزرار التي يظهرها
YES_NO_OPTION يستخدم لإظهار الأزرار Yes و No في الـ Option Pane.
YES_NO_CANCEL_OPTION ييستخدم لإظهار الأزرار Yes و No و Cancel في الـ Option Pane.
OK_CANCEL_OPTION يستخدم لإظهار الأزرار OK و Cancel في الـ Option Pane.

دوال الكلاس JOptionPane

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

الدالة مع تعريفها
public static void showMessageDialog(Component parentComponent, Object message) تظهر Option Pane يعرض نافذة فيها رسالة أمام المستخدم.

  • مكان الباراميتر parentComponent نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.

  • مكان الباراميتر message نضع نص النافذة التي ستظهر.

public static void showMessageDialog(Component parentComponent, Object message, String title, int messageType) تظهر Option Pane يعرض نافذة فيها رسالة أمام المستخدم لها عنوان و أيقونة من الأيقونات المجهزة في جافا.

  • مكان الباراميتر parentComponent نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.

  • مكان الباراميتر message نضع نص النافذة التي ستظهر.

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

  • مكان الباراميتر messageType نضع إحدى الثوابت الموجودة في الكلاس JOptionPane المخصصة لإظهار أيقونة في الـ Option Pane.

public static void showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon) تظهر Option Pane يعرض نافذة فيها رسالة أمام المستخدم لها عنوان و أيقونة غير موجودة في جافا.

  • مكان الباراميتر parentComponent نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.

  • مكان الباراميتر message نضع نص النافذة التي ستظهر.

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

  • مكان الباراميتر messageType نضع إحدى الثوابت الموجودة في الكلاس JOptionPane المخصصة لإظهار أيقونة في الـ Option Pane.

  • مكان الباراميتر icon نضع كائن من الكلاس Icon يحتوي على رابط الأيقونة التي ستظهر.

public static int showConfirmDialog(Component parentComponent, Object message) تظهر Option Pane يعرض نافذة أمام المستخدم فيها نص الذي تم تمريره لها و ثلاث خيارات Yes, No و Cancel.
إضافة إلى ذلك تضع النص ( Select an Option ) كعنوان للنافذة.

  • مكان الباراميتر parentComponent نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.

  • مكان الباراميتر message نضع نص النافذة التي ستظهر.

public static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType) تظهر Option Pane يعرض نافذة أمام المستخدم فيها النص الذي تم تمريره لها و الخيارات التي تم تحديدها.

  • مكان الباراميتر parentComponent نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.

  • مكان الباراميتر message نضع نص النافذة التي ستظهر.

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

  • مكان الباراميتر optionType نضع إحدى الثوابت الموجودة في الكلاس JOptionPane المخصصة لتحديد الخيارات التي ستظهر في الـ Option Pane.

public static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType) تظهر Option Pane يعرض نافذة أمام المستخدم فيها النص الذي تم تمريره لها و الخيارات و الأيقونة من الأيقونات المجهزة في جافا.

  • مكان الباراميتر parentComponent نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.

  • مكان الباراميتر message نضع نص النافذة التي ستظهر.

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

  • مكان الباراميتر optionType نضع إحدى الثوابت الموجودة في الكلاس JOptionPane المخصصة لتحديد الخيارات التي ستظهر في الـ Option Pane.

  • مكان الباراميتر messageType نضع إحدى الثوابت الموجودة في الكلاس JOptionPane المخصصة لإظهار أيقونة في الـ Option Pane.

public static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon) تظهر Option Pane يعرض نافذة أمام المستخدم فيها النص الذي تم تمريره لها و الخيارات و الأيقونة التي تم تحديدها.

  • مكان الباراميتر parentComponent نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.

  • مكان الباراميتر message نضع نص النافذة التي ستظهر.

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

  • مكان الباراميتر optionType نضع إحدى الثوابت الموجودة في الكلاس JOptionPane المخصصة لتحديد الخيارات التي ستظهر في الـ Option Pane.

  • مكان الباراميتر messageType نضع إحدى الثوابت الموجودة في الكلاس JOptionPane المخصصة لإظهار أيقونة في الـ Option Pane.

  • مكان الباراميتر icon نضع كائن من الكلاس Icon يحتوي على رابط الأيقونة التي ستظهر.

public static String showInputDialog(Object message) تظهر Option Pane يعرض نافذة أمام المستخدم فيها نص الذي تم تمريره لها و مربع نص و خياران Ok و Cancel.
إضافة إلى ذلك تضع النص ( Input ) كعنوان للنافذة.

مكان الباراميتر message نضع نص النافذة التي ستظهر.
public static String showInputDialog(Object message, Object initialSelectionValue) تظهر Option Pane يعرض نافذة أمام المستخدم فيها نص الذي تم تمريره لها و مربع نص يحتوي على قيمة أولية و خياران Ok و Cancel.
إضافة إلى ذلك تضع النص ( Input ) كعنوان للنافذة.

  • مكان الباراميتر message نضع نص النافذة التي ستظهر.

  • مكان الباراميتر initialSelectionValue نضع قيمة إفتراضية في مربع النص.

public static String showInputDialog(Component parentComponent, Object message) تظهر Option Pane يعرض نافذة أمام المستخدم فيها نص الذي تم تمريره لها و مربع نص و خياران Ok و Cancel.
إضافة إلى ذلك تضع النص ( Input ) كعنوان للنافذة.

  • مكان الباراميتر parentComponent نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.

  • مكان الباراميتر message نضع نص النافذة التي ستظهر.

public static String showInputDialog(Component parentComponent, Object message, Object initialSelectionValue) تظهر Option Pane يعرض نافذة أمام المستخدم فيها نص الذي تم تمريره لها و مربع نص يحتوي على قيمة أولية و خياران Ok و Cancel.
إضافة إلى ذلك تضع النص ( Input ) كعنوان للنافذة.

  • مكان الباراميتر parentComponent نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.

  • مكان الباراميتر message نضع نص النافذة التي ستظهر.

  • مكان الباراميتر initialSelectionValue نضع قيمة إفتراضية في مربع النص.

public static String showInputDialog(Component parentComponent, Object message, String title, int messageType) تظهر Option Pane يعرض نافذة أمام المستخدم فيها نص الذي تم تمريره لها و مربع نص يحتوي على قيمة أولية و خياران Ok و Cancel.

  • مكان الباراميتر parentComponent نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.

  • مكان الباراميتر message نضع نص النافذة التي ستظهر.

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

  • مكان الباراميتر messageType نضع إحدى الثوابت الموجودة في الكلاس JOptionPane المخصصة لإظهار أيقونة في الـ Option Pane.

أشكال الـ JOptionPane


JOptionPane.showMessageDialog(null, "This is a plain message", "Plain Message", JOptionPane.PLAIN_MESSAGE);
	


JOptionPane.showMessageDialog(null, "This is an information message", "Information Message", JOptionPane.INFORMATION_MESSAGE);
	


JOptionPane.showMessageDialog(null, "This is a warning message", "Warning Message", JOptionPane.WARNING_MESSAGE);
	


JOptionPane.showMessageDialog(null, "This is an error message", "Error Message", JOptionPane.ERROR_MESSAGE);
	


JOptionPane.showMessageDialog(null, "This is a question message", "Quesiton Message", JOptionPane.QUESTION_MESSAGE);
	


JOptionPane.showConfirmDialog(null,
                              "You are going to delete you history.\nAre you sure?",
                              "Delete History",
                              JOptionPane.YES_NO_CANCEL_OPTION,
                              JOptionPane.WARNING_MESSAGE);
	


JOptionPane.showConfirmDialog(null,
                              "Do you like programming?",
                              "Quesiton",
                              JOptionPane.YES_NO_OPTION,
                              JOptionPane.QUESTION_MESSAGE);
	


JOptionPane.showConfirmDialog(null,
                              "Close The program now?",
                              "Warning",
                              JOptionPane.OK_CANCEL_OPTION,
                              JOptionPane.WARNING_MESSAGE);
	


JOptionPane.showInputDialog(null, "Enter value:", "", JOptionPane.PLAIN_MESSAGE);
	


Object[] values = {"java", "css", "c++", "android"};
JOptionPane.showInputDialog(null, "Select value", "", JOptionPane.PLAIN_MESSAGE, null, values, values[0]);
	

 طريقة إنشاء JOptionPane يمثل Message Dialog

المثال التالي يعلمك طريقة إظهار Message Dialog. كل زر يظهر Message Dialog مختلف.


مثال

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

                    public class Main {

                    public static void main(String[] args) {

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

                    // Buttons هنا قمنا بتعريف خمسة
                    JButton btn1 = new JButton("Display Plain Dialog");
                    JButton btn2 = new JButton("Display Information Dialog");
                    JButton btn3 = new JButton("Display Warning Dialog");
                    JButton btn4 = new JButton("Display Error Dialog");
                    JButton btn5 = new JButton("Display Question Dialog");

                    // منهم Button هنا قمنا بتحديد موقع و حجم كل
                    btn1.setBounds(95, 10, 200, 30);
                    btn2.setBounds(95, 50, 200, 30);
                    btn3.setBounds(95, 90, 200, 30);
                    btn4.setBounds(95, 130, 200, 30);
                    btn5.setBounds(95, 170, 200, 30);

                    // Frame بداخل الـ Buttons هنا قمنا بإضافة جميع الـ
                    frame.add(btn1);
                    frame.add(btn2);
                    frame.add(btn3);
                    frame.add(btn4);
                    frame.add(btn5);

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

                    // btn1 عند النقر على الـ Message Dialog هنا قلنا أنه سيتم إظهار
                    btn1.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                    JOptionPane.showMessageDialog(frame, "This is a plain message", "Plain Message", JOptionPane.PLAIN_MESSAGE);
                    }
                    });

                    // btn2 عند النقر على الـ Message Dialog هنا قلنا أنه سيتم إظهار
                    btn2.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                    JOptionPane.showMessageDialog(frame, "This is an information message", "Information Message", JOptionPane.INFORMATION_MESSAGE);
                    }
                    });

                    // btn3 عند النقر على الـ Message Dialog هنا قلنا أنه سيتم إظهار
                    btn3.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                    JOptionPane.showMessageDialog(frame, "This is a warning message", "Warning Message", JOptionPane.WARNING_MESSAGE);
                    }
                    });

                    // btn4 عند النقر على الـ Message Dialog هنا قلنا أنه سيتم إظهار
                    btn4.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                    JOptionPane.showMessageDialog(frame, "This is an error message", "Error Message", JOptionPane.ERROR_MESSAGE);
                    }
                    });

                    // btn5 عند النقر على الـ Message Dialog هنا قلنا أنه سيتم إظهار
                    btn5.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                    JOptionPane.showMessageDialog(frame, "This is a question message", "Question Message", JOptionPane.QUESTION_MESSAGE);
                    }
                    });

                    }

                    }
                  

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

كل زر يظهر Message Dialog مختلف في المحتوى و الأيقونة.

طريقة إنشاء JOptionPane يمثل message dialog في جافا

 طريقة إنشاء JOptionPane يمثل Confirm Dialog

المثال التالي يعلمك طريقة إظهار Confirm Dialog. كل زر يظهر Confirm Dialog مختلف.
إضافةً إلى ذلك ستتعلم كيف تنفذ أوامر معينة بناءاً على كل زر موجود في الـ Confirm Dialog في حال قام المستخدم بالنقر عليه.


مثال طريقة إظهار Confirm Dialog. كل زر يظهر Confirm Dialog مختلف

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

                    public class Main {

                    public static void main(String[] args) {

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

                    // واحد Label و Buttons هنا قمنا بتعريف ثلاثة
                    JButton btn1 = new JButton("Delete your history");
                    JButton btn2 = new JButton("Do you like programming");
                    JButton btn3 = new JButton("Exit");
                    JLabel label = new JLabel("Here we display user interactions");

                    // Frame هنا قمنا بتحديد موقع و حجم جميع الأشياء التي سنضيفها في الـ
                    btn1.setBounds(95, 20, 200, 30);
                    btn2.setBounds(95, 60, 200, 30);
                    btn3.setBounds(95, 100, 200, 30);
                    label.setBounds(95, 150, 200, 30);

                    // Frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها في الـ
                    frame.add(btn1);
                    frame.add(btn2);
                    frame.add(btn3);
                    frame.add(label);

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


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

                    // result ثم تخزين قيمة الزر الذي نقر عليه المستخدم في المتغير Confirm Dialog سيتم إظهار
                    int result = JOptionPane.showConfirmDialog( frame,
                    "You are going to delete you history.\nAre you sure?",
                    "Delete History",
                    JOptionPane.YES_NO_CANCEL_OPTION,
                    JOptionPane.WARNING_MESSAGE );

                    // result على أساس القيمة التي تم تخزينها في المتغير label هنا سيتم تغيير نص الـ
                    switch (result) {
                    case JOptionPane.YES_OPTION:
                    label.setText("User click: Yes");
                    break;
                    case JOptionPane.NO_OPTION:
                    label.setText("User click: No");
                    break;
                    case JOptionPane.CANCEL_OPTION:
                    label.setText("User click: Cancel");
                    break;
                    case JOptionPane.CLOSED_OPTION:
                    label.setText("User click: Close");
                    break;
                    }

                    }
                    });


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

                    // result ثم تخزين قيمة الزر الذي نقر عليه المستخدم في المتغير Confirm Dialog سيتم إظهار
                    int result = JOptionPane.showConfirmDialog( frame,
                    "Do you like programming?",
                    "Question",
                    JOptionPane.YES_NO_OPTION,
                    JOptionPane.QUESTION_MESSAGE );

                    // result على أساس القيمة التي تم تخزينها في المتغير label هنا سيتم تغيير نص الـ
                    switch (result) {
                    case JOptionPane.YES_OPTION:
                    label.setText("User click: Yes");
                    break;
                    case JOptionPane.NO_OPTION:
                    label.setText("User click: No");
                    break;
                    case JOptionPane.CLOSED_OPTION:
                    label.setText("User click: Close");
                    break;
                    }

                    }
                    });

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

                    // result ثم تخزين قيمة الزر الذي نقر عليه المستخدم في المتغير Confirm Dialog سيتم إظهار
                    int result = JOptionPane.showConfirmDialog( frame,
                    "Close The program now?",
                    "Warning",
                    JOptionPane.OK_CANCEL_OPTION,
                    JOptionPane.WARNING_MESSAGE );

                    // result على أساس القيمة التي تم تخزينها في المتغير label هنا سيتم تغيير نص الـ
                    switch (result) {
                    case JOptionPane.OK_OPTION:
                    System.exit(0);
                    break;
                    case JOptionPane.CANCEL_OPTION:
                    label.setText("User click: Cancel");
                    break;
                    case JOptionPane.CLOSED_OPTION:
                    label.setText("User click: Close");
                    break;
                    }

                    }
                    });


                    }

                    }
                  

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

كل زر يظهر Confirm Dialog مختلف في المحتوى و الأيقونة.

طريقة إنشاء JOptionPane يمثل confirm dialog في جافا

 طريقة إنشاء JOptionPane يمثل Input Dialog

عند النقر على الزر Search سيظهر Input Dialog تطلب من المستخدم إدخال قيمة في Text Field.
عند النقر على الزر Select سيظهر Input Dialog تطلب من المستخدم إختيار قيمة من Combo Box.


مثال طريقة إنشاء JOptionPane يمثل Input Dialog

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

                    public class Main {

                    public static void main(String[] args) {

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

                    // واحد Label و Buttons هنا قمنا بتعريف خمسة إثنين
                    JButton btn1 = new JButton("Enter Value");
                    JButton btn2 = new JButton("Select Value");
                    JLabel label = new JLabel("Returned Value:");

                    // Frame هنا قمنا بتحديد موقع و حجم جميع الأشياء التي سنضيفها في الـ
                    // منهم Button هنا قمنا بتحديد موقع و حجم كل
                    btn1.setBounds(95, 30, 200, 30);
                    btn2.setBounds(95, 70, 200, 30);
                    label.setBounds(95, 110, 200, 30);

                    // Frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها في الـ
                    frame.add(btn1);
                    frame.add(btn2);
                    frame.add(label);

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

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

                    // result ثم تخزين القيمة التي قام المستخدم بإدخالها في المتغير Input Dialog سيتم إظهار
                    String result = JOptionPane.showInputDialog(frame, "Enter value:", "", JOptionPane.PLAIN_MESSAGE);

                    // Label في حال قام المستخدم بإدخال قيمة في مربع النص فإنه سيتم عرضها في الـ
                    if(result != null)
                    label.setText("Returned Value: " + result);

                    }
                    });

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

                    // Input Dialog في الـ Combo Box هنا قمنا بتعريف مصفوفة من الخيارات التي نريد عرضها كـ
                    Object[] values = {"java", "css", "c++", "android"};

                    // result ثم تخزين القيمة التي قام المستخدم بإدخالها في المتغير Input Dialog سيتم إظهار
                    String result = (String) JOptionPane.showInputDialog(frame, "Select value", "", JOptionPane.PLAIN_MESSAGE, null, values, values[0]);

                    // Label سيتم عرض القيمة التي قام المستخدم بإختيارها في الـ
                    label.setText("Returned Value: " + result);

                    }
                    });

                    }

                    }
                  

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

كل زر يظهر Input Dialog مختلف في المحتوى.

طريقة إنشاء JOptionPane يمثل input dialog في جافا

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