Swingطريقة الحصول على جميع القيم التي تم تحديدها في الـ JTable
المثال التالي يعلمك طريقة الحصول على جميع القيم التي قام المستخدم بتحديدها في الجدول.
مثال
import javax.swing.JFrame; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.JScrollPane; import javax.swing.JLabel; import javax.swing.JTextArea; import javax.swing.ListSelectionModel; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; public class Main { // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها static JFrame frame = new JFrame("JTable demo"); static DefaultTableModel model = new DefaultTableModel(); static JTable table = new JTable( model ); static JScrollPane tableScroller = new JScrollPane( table ); static JLabel Label = new JLabel("Selected Cells"); static JTextArea textArea = new JTextArea(); static JScrollPane textAreaScroller = new JScrollPane(textArea); public static void main(String[] args) { // الخاصة فيه model هنا قمنا بتخزين أسماء أعمدة الجدول و القيم التي ستظهر فيه ثم وضعناها في الـ String columns[] = {"ID", "First Name", "Last Name", "Phone"}; String data[][] = { {"1", "Mhamad", "Harmush", "70123456" }, {"2", "Ahmad", "Mousally", "76454532" }, {"3", "Hala", "Hassan", "03555124" }, {"4", "Rim", "Al Mouhandes", "01321123" }, {"5", "Said", "Al Kurdy", "07445599" }, {"6", "Abdullah", "Saadi", "71001234" }, {"7", "Ibrahim", "Marhaba", "04555666" }, {"8", "Omar", "El Koussa", "01357894" }, {"9", "Riad", "Asaad", "76887123" }, {"10", "Rawan", "Hoblos", "01200500" }, {"11", "Naya", "Asmar", "03654123" }, {"12", "Mahmoud", "Mawwas", "70040300" }, {"13", "Elena", "Shbib", "71199113" } }; model.setDataVector(data, columns); // بدل تحديد السطر كله دفعة واحدة ( cell ) هنا جعلنا المستخدم قادر على تحديد خلية table.setCellSelectionEnabled(true); // textArea هنا قمنا بتحديد طريقة عرض النص بداخل الـ textArea.setLineWrap(true); textArea.setWrapStyleWord(true); // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ tableScroller.setBounds(0, 0, 585, 200); Label.setBounds(20, 220, 200, 20); textAreaScroller.setBounds(20, 260, 535, 80); // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ frame.add(tableScroller); frame.add(Label); frame.add(textAreaScroller); // frame هنا قمنا بتحديد خصائص الـ frame.setSize(600, 400); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(null); frame.setVisible(true); // لأنه يتيح لنا معرفة إذا قام المستخدم بتحديد أو إلغاء تحديد قيم من الجدول lsm هنا قمنا بوضع أي قيم سيتم تحديدها في الكائن SelectionModel lsm = table.getSelectionModel(); // هنا نضع الأوامر التي نريد تنفيذها عند تحديد أي قيمة أو إلغاء تحديد أي قيمة في الجدول lsm.addListSelectionListener(newSelectionListener() { public void valueChanged(ListSelectionEvent e) { { // textArea سيتم أولاً مسح أي نص موجود في الـ textArea.setText(""); // textArea بعدها سيتم المرور على جميع القيم الموجودة في الجدول و وضع المحدد منها في الـ for(int i=0; i<table.getRowCount(); i++) for(int j=0; j<table.getColumnCount(); j++) if(table.isCellSelected(i, j)) textArea.append((String)table.getValueAt(i, j) + " + "); } }); } }
ستظهر لك النافذة التالية عند التشغيل.
لتحديد أكثر من قيمة في الجدول أبق إصبعك على الزر Ctrl أثناء التحديد.