Swing طريقة جعل المستخدم على إختيار قيمة واحدة من الـ JList

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


مثال

Main.java
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class Main {
 
    // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها
    static JFrame frame = new JFrame("JList demo");
 
    // هنا قمنا بإنشاء العنوان الذي سنضعه فوق القائمة الأولى
    static JLabel label_1 = new JLabel("Select Language");
 
    // هنا قمنا بإنشاء القائمة الأولى
    static DefaultListModel model_1 = new DefaultListModel();
    static JList list_1 = new JList( model_1 );
    static JScrollPane listScrollPane_1 = new JScrollPane( list_1 );
 
    // هنا قمنا بإنشاء العنوان الذي سنضعه فوق القائمة الثانية
    static JLabel label_2 = new JLabel("Select Level");
 
    // هنا قمنا بإنشاء القائمة الثانية
    static DefaultListModel model_2 = new DefaultListModel();
    static JList list_2 = new JList( model_2 );
    static JScrollPane listScrollPane_2 = new JScrollPane( list_2 );
 
    // هنا قمنا بإنشاء الزر الموضوع تحت القائمتين و العناوين الذي سيظهر عند النقر على الزر/span>
    static JButton btn = new JButton("View Selected");
    static JLabel label_3 = new JLabel("", JLabel.CENTER);
 
 
    public static void main(String[] args) {
 
        // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ
        label_1.setBounds(50, 25, 100, 30);
        listScrollPane_1.setBounds(50, 60, 100, 94);
        label_2.setBounds(190, 25, 100, 30);
        listScrollPane_2.setBounds(190, 60, 100, 94);
        btn.setBounds(100, 200, 130, 30);
        label_3.setBounds(0, 250, 350, 30);
 
        // و التي بدورها ستظهر في القائمة الأولى model_1 هنا أضفنا عدة عناصر في الـ
        model_1.addElement("java");
        model_1.addElement("c");
        model_1.addElement("c++");
        model_1.addElement("c#");
        model_1.addElement("vb");
 
        // و التي بدورها ستظهر في القائمة الثانية model_2 هنا أضفنا عدة عناصر في الـ
        model_2.addElement("101");
        model_2.addElement("102");
        model_2.addElement("103");
 
        // هنا جعلنا أول قيمة في القائمة الأولى مختارة إفتراضياً بالإضافة إلى أن المستخدم لا يستطيع إختيار أكثر من قيمة منها في وقت واحد
        list_1.setSelectedIndex(0);
        list_1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 
        // هنا جعلنا أول قيمة في القائمة الثانية مختارة إفتراضياً بالإضافة إلى أن المستخدم لا يستطيع إختيار أكثر من قيمة منها في وقت واحد
        list_2.setSelectedIndex(0);
        list_2.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 
        // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ
        frame.add(label_1);
        frame.add(listScrollPane_1);
        frame.add(label_2);
        frame.add(listScrollPane_2);
        frame.add(btn);
        frame.add(label_3);
 
        // frame هنا قمنا بتحديد خصائص الـ
        frame.setSize(350, 350);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(null);
        frame.setVisible(true);
 
        // btn هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                // سيتم عرض القيم التي إختارها المستخدم أسفل الزر
                label_3.setText("You select:   " + list_1.getSelectedValue() + " [ " + list_2.getSelectedValue() + " ]" );
            }
        });
 
    }
 
}
		

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

لاحظ أيضاً أنه في كلا القائمتين لا يمكنك إختيار أكثر من عنصر.

طريقة معرفة قيم العناصر التي قام المستخدم باختيارها من قائميتن مختلفتين Jفي جافا

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة