Swing - الكلاس JComboBox

Java Swing الكلاس JComboBox

الكلاس JComboBox يستخدم لإضافة قائمة منسدلة (Combo Box) في واجهة المستخدم.

هذه القائمة تظهر فقط الخيار الذي قام المستخدم بإختياره منها.


بنا الكلاس JComboBox 

public class JComboBox<E>
extends JComponent
implements ItemSelectable, ListDataListener, ActionListener, Accessible 
	

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

الجدول التالي يحتوي على كونستركتورات الكلاس JComboBox.

الكونستركتور مع تعريفه
public JComboBox() ينشئ كائن من الكلاس JComboBox يمثل Combo Box فارغة, أي لا تحتوي أي عنصر.
لإضافة خيارات فيها نستخدم الدالة addItem().
public JComboBox(Object[] Items) ينشئ كائن من الكلاس JComboBox يمثل Combo Box فيها خيارات جاهزة.
مكان الباراميتر items نمرر مصفوفة من أي نوع.
عناصر هذه المصفوفة هي التي ستظهر كخيارات في القائمة.
public JComboBox(Vector<E> items) ينشئ كائن من الكلاس JComboBox يمثل Combo Box فيها خيارات جاهزة.
مكان الباراميتر items نمرر كائن من الكلاس Vector.
عناصر الكائن Vector هي التي ستظهر كخيارات في القائمة.

دوال الكلاس JComboBox

الجدول التالي يحتوي على بعض دوال الكلاس JComboBox.

الدالة مع تعريفها
public void addActionListener(ActionListener al) تستخدم لتنفيذ أوامر معينة عند النقر على كائن الـ JComboBox الذي قام بإستدعائها.
مكان الباراميتر al نضع كائن من الكلاس ActionListener و نفعل بداخله Override لدالة إسمها actionPerformed(ActionEvent ae).
public void addItem(Object item) تستخدم لإضافة عنصر جديد في كائن الـ JComboBox الذي قام بإستدعائها.
العنصر الذي يتم إضافته يوضع في آخرها.
مكان الباراميتر item نمرر لها كائن من أي نوع.
public void insertItemAt(Object item, int index) تستخدم لإضافة عنصر جديد في مكان محدد في كائن الـ JComboBox الذي قام بإستدعائها.
مكان الباراميتر item نمرر لها كائن من أي نوع.
مكان الباراميتر index نمرر رقم Index يحدد المكان الذي سيتم إضافة العنصر فيه.
public void removeItem(Object item) تستخدم لحذف عنصر موجود في كائن الـ JComboBox الذي قام بإستدعائها.
مكان الباراميتر item نمرر كائن يمثل العنصر الذي سيتم حذفه.
public void removeItemِAt(int index) تستخدم لحذف عنصر موجود في كائن الـ JComboBox الذي قام بإستدعائها.
مكان الباراميتر index نمرر رقم index العنصر الذي سيتم حذفه.
public void removeAllItems() تستخدم لحذف لحذف جميع عناصر كائن الـ JComboBox الذي قام بإستدعائها.
public void setMaximumRowCount(int count) تستخدم لتحديد عدد العناصر الأقصى التي يمكن أن تظهر في كائن الـ JComboBox الذي قام بإستدعائها دفعة واحدة.
مكان الباراميتر count نضع رقم يمثل عدد العناصر الأقصى التي يمكن أن تظهر في كائن الـ JComboBox عند النقر عليه.
كما أنها تضيف Scroll Bar عند الحاجة حتى تستطيع رؤية جميع العناصر الموجودة.
public int getItemCount() ترجع عدد العناصر الموجودة في كائن الـ JComboBox الذي قام بإستدعائها.
public Object getSelectedItem() ترجع العناصر الذي قام المستخدم باختياره في كائن الـ JComboBox الذي قام بإستدعائها.

 طريقة إنشاء JComboBox

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


مثال إنشاء كائن من الكلاس JComboBox لا يحتوي على أي عناصر و إضافته في النافذة.

Main.java
                    import javax.swing.JFrame;
                    import javax.swing.JComboBox;

                    public class Main {

                    public static void main(String[] args) {

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

                    JComboBox comboBox = new JComboBox();                     // لا يحتوي على عناصر Combo Box بإستخدام الكونستركتور الإفتراضي. أي قمنا بإنشاء JComboBox هنا أنشأنا كائن من الكلاس
                    comboBox.setBounds(90, 40, 100, 30);                      // frame في الـ Combo Box هنا قمنا بتحديد حجم و موقع الـ

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

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

                    }

                    }
                  

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

طريقة إضافة JComboBox في ال JFrame

 طريقة إنشاء JComboBox يحتوي على عناصر

المثال التالي يعلمك طريقة إنشاء كائن من الكلاس JComboBox يحتوي على عناصر.


مثال  إنشاء كائن من الكلاس JComboBox يحتوي على عناصر.

Main.java
                    import javax.swing.JFrame;
                    import javax.swing.JComboBox;

                    public class Main {

                    public static void main(String[] args) {

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

                    String[] items = { "java", "php", "c", "c++" , "html" };  // هنا قمنا بتعريف مصفوفة من الكلمات

                    JComboBox comboBox = new JComboBox( items );              // له كعناصر items و وضعنا عناصر المصفوفة Combo Box أي قمنا بإنشاء JComboBox هنا أنشأنا كائن من الكلاس
                    comboBox.setBounds(90, 40, 100, 30);                      // frame في الـ Combo Box هنا قمنا بتحديد حجم و موقع الـ

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

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

                    }

                    }
                  

ستظهر لك النافذة التالية عند التشغيل. قم بالنقر على الـ Combo Box لتظهر لك الخيارات التي بداخله أيضاً.

طريقة إضافة عناصر في ال JComboBox

 طريقة تغيير نوع و حجم ولون خط عناصر الـ JComboBox

المثال التالي يعلمك طريقة تغيير نوع و حجم و لون خط عناصر كائن الـ JComboBox.


مثال على تغيير نوع و حجم و لون خط عناصر كائن الـ JComboBox.

Main.java
                    import javax.swing.JFrame;
                    import javax.swing.JComboBox;
                    import java.awt.Color;
                    import java.awt.Font;

                    public class Main {

                    public static void main(String[] args) {

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

                    String[] items = { "java", "php", "c", "c++" , "html" };  // هنا قمنا بتعريف مصفوفة من الكلمات

                    JComboBox comboBox = new JComboBox( items );              // له كعناصر items و وضعنا عناصر المصفوفة Combo Box أي قمنا بإنشاء JComboBox هنا أنشأنا كائن من الكلاس
                    comboBox.setBounds(90, 40, 100, 30);                      // frame في الـ comboBox هنا قمنا بتحديد حجم و موقع الـ

                    Font newFont = new Font("Arial", Font.BOLD, 16);          // حجمه 16 Arial يمثل نوع خط عريض إسمه Font هنا أنشأنا كائن من الكلاس

                    comboBox.setFont(newFont);                                // newFont يستخدم الـ comboBox هنا جعلنا الـ
                    comboBox.setForeground(Color.cyan);                       // comboBox هنا قمنا بتغير لون كلمات الـ
                    comboBox.setBackground(Color.gray);                       // comboBox هنا قمنا بتغير لون خلفية الـ

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

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

                    }

                    }
                  

ستظهر لك النافذة التالية عند التشغيل. قم بالنقر على الـ Combo Box لتظهر لك الخيارات التي بداخله أيضاً.

طريقة إضافة عناصر في ال JComboBox

 طريقة معرفة العنصر الذي قام المستخدم باختياره من ضمن العناصر الموجودة في JComboBox

المثال التالي يعلمك طريقة معرفة العنصر الذي قام المستخدم باختياره من ضمن العناصر الموجودة في كائن الـ JComboBox.


مثال على معرفة العنصر الذي قام المستخدم باختياره من ضمن العناصر الموجودة في كائن الـ JComboBox.

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

                    public class Main {

                    // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها
                    static JFrame frame = new JFrame("JComboBox demo");
                    static String[] items = { "java", "php", "c", "c++" , "html" };
                    static JComboBox comboBox = new JComboBox( items );
                    static JButton button = new JButton("View Selected Item");
                    static JLabel label = new JLabel();

                    public static void main(String[] args) {

                    // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ
                    comboBox.setBounds(40, 40, 100, 30);
                    button.setBounds(160, 40, 150, 30);
                    label.setBounds(40, 80, 200, 30);

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

                    // frame هنا قمنا بتحديد خصائص الـ
                    frame.setSize(360, 250);
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setLayout(null);
                    frame.setVisible(true);

                    // button هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ
                    button.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e)
                    {
                    // label يظهر كنص للـ comboBox هنا جعلنا الخيار الذي يقوم المستخدم باختياره من الـ
                    label.setText("You select: "+comboBox.getSelectedItem());
                    }
                    });

                    }

                    }
                  

ستظهر لك النافذة التالية عند التشغيل. أنقر على الزر ليظهر لك الخيار الذي قمت باختياره.

طريقة إضافة عناصر في ال JComboBox

 طريقة جعل المستخدم يقوم بإضافة أو حذف عناصر في JComboBox و إظهار عدد جميع العناصر الموجودة فيه

المثال التالي يعلمك طريقة جعل المستخدم يقوم بإضافة أو حذف عناصر في كائن الـ JComboBox. بالإضافة إلى إظهار عدد جميع العناصر الموجودة فيه.


مثال على جعل المستخدم يقوم بإضافة أو حذف عناصر في كائن الـ JComboBox

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

                    public class Main {

                    // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها
                    static JFrame frame = new JFrame("JComboBox demo");
                    static JComboBox comboBox = new JComboBox();
                    static JButton addButton = new JButton("Add Item");
                    static JButton removeButton = new JButton("Remove Selected Item");
                    static JButton removeAllButton = new JButton("Remove All Items");
                    static JLabel counterLabel = new JLabel("Total items = 0");
                    static JTextField textField = new JTextField();

                    public static void main(String[] args) {

                    // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ
                    textField.setBounds(40, 40, 110, 30);
                    addButton.setBounds(170, 40, 120, 30);
                    removeButton.setBounds(40, 80, 250, 30);
                    removeAllButton.setBounds(40, 120, 250, 30);
                    comboBox.setBounds(310, 40, 140, 30);
                    counterLabel.setBounds(310, 80, 140, 30);

                    // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ
                    frame.add(textField);
                    frame.add(addButton);
                    frame.add(removeButton);
                    frame.add(removeAllButton);
                    frame.add(comboBox);
                    frame.add(counterLabel);

                    // frame هنا قمنا بتحديد خصائص الـ
                    frame.setSize(500, 250);
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frame.setLayout(null);
                    frame.setVisible(true);


                    // addButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ
                    addButton.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e)
                    {
                    // إذا كان مربع النص غير فارغ و قام المستخدم بالنقر على الزر, عندها سيتم إضافته
                    if( !textField.getText().equals("") )
                    {
                    comboBox.addItem(textField.getText());
                    counterLabel.setText("Total Items = "+ comboBox.getItemCount());
                    }
                    }
                    });


                    // removeButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ
                    removeButton.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e)
                    {
                    // سيتم حذف العنصر الحالي بشرط وجود عنصر واحد على الأقل فيها
                    if( comboBox.getItemCount() > 0 )
                    {
                    comboBox.removeItemAt(comboBox.getSelectedIndex());
                    counterLabel.setText("Total Items = "+ comboBox.getItemCount());
                    }
                    }
                    });


                    // removeAllButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ
                    removeAllButton.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e)
                    {
                    // عند النقر على هذا الزر, سيتم حذف جميع العناصر
                    comboBox.removeAllItems();
                    counterLabel.setText("Total Items = "+ comboBox.getItemCount());
                    }
                    });


                    }

                    }
                  

ستظهر لك النافذة التالية عند التشغيل. قم بتجربته بإضافة و حذف بعض العناصر.

طريقة إضافة عناصر في ال JComboBox