Swingطريقة جعل المستخدم يضيف و يحذف قيم في JList
المثال التالي يعلمك طريقة جعل المستخدم يدخل قيم في كائن الـ JList
, بالإضافة إلى جعله قادر على حذف القيم التي أدخلها.
مثال
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.DefaultListModel; import javax.swing.JScrollPane; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.JTextField; public class Main { // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها static JFrame frame = new JFrame("JList demo"); static DefaultListModel model = new DefaultListModel(); static JList list = new JList( model ); static JLabel label = new JLabel("Enter Item"); static JScrollPane listScrollPane = new JScrollPane( list ); static JTextField textField = new JTextField(); static JButton addButton = new JButton("Add Item"); static JButton removeButton = new JButton("Remove"); static JButton removeAllButton = new JButton("Remove All"); static JLabel totalLabel = new JLabel("Total Items: 0"); static int itemsNumber = 0; public static void main(String[] args) { // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ label.setBounds(20, 80, 70, 30); textField.setBounds(100, 80, 100, 30); listScrollPane.setBounds(350, 40, 150, 180); addButton.setBounds(220, 80, 100, 30); removeButton.setBounds(220, 120, 100, 30); removeAllButton.setBounds(220, 160, 100, 30); totalLabel.setBounds(350, 230, 100, 30); // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ frame.add(label); frame.add(textField); frame.add(addButton); frame.add(removeButton); frame.add(removeAllButton); frame.add(listScrollPane); frame.add(totalLabel); // frame هنا قمنا بتحديد خصائص الـ frame.setSize(550, 350); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(null); frame.setVisible(true); // addButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if( !textField.getText().equals("") ) { // سيتم إضافة القيمة التي أدخلها المستخدم في مربع النص في القائمة و تحديث عدد العناصر model.addElement( textField.getText() ); itemsNumber++; totalLabel.setText( "Total Items: " + itemsNumber ); } } }); // removeButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ removeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // إذا كان المستخدم قد قام بتحديد عنصر واحد على الأقل من عناصر القائمة if( list.getSelectedIndex() != -1 ) { // كل عنصر تم تحديده فيها ليتم حذفه من خلاله index سيتم تخزين int[] selectedIndices = list.getSelectedIndices(); for( int i=selectedIndices.length-1; i>=0; i-- ) { model.removeElementAt( selectedIndices[i] ); itemsNumber--; } } // سيتم تحديث عدد العناصر الموجودة في القائمة totalLabel.setText( "Total Items: " + itemsNumber ); } }); // removeAllButton هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ removeAllButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // سيتم حذف جميع قيم القائمة و تصفير عدد العناصر الموجودة فيها model.removeAllElements(); itemsNumber = 0; totalLabel.setText( "Total Items: " + itemsNumber ); } }); } }
ستظهر لك النافذة التالية عند التشغيل.
ملاحظة لإلغاء أكثر من عنصر في نفس الوقت, أبق إصبعك على الزر Ctrl أثناء إختيار العناصر, بعدها أنقر على الزر Remove لإلغائهم.