Swingطريقة جعل المستخدم على إختيار قيمة واحدة من الـ JList
المثال التالي يعلمك طريقة إجبار المستخدم على إختيار قيمة واحدة من القيم الموجودة في كائن الـ JList
.
كما أنك ستتعلم كيف تجلب القيم التي إختارها المستخدم من قائمتين عند النقر على كائن الـ JButton
.
مثال
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() { public void actionPerformed(ActionEvent e) { // سيتم عرض القيم التي إختارها المستخدم أسفل الزر label_3.setText("You select: " + list_1.getSelectedValue() + " [ " + list_2.getSelectedValue() + " ]" ); } }); } }
ستظهر لك النافذة التالية عند التشغيل. قم بإختيار أي عنصر من القائمتين ثم أنقر الزر لتظهر لك النتيجة.
لاحظ أيضاً أنه في كلا القائمتين لا يمكنك إختيار أكثر من عنصر.