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() {
@Override
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) + " + ");
}
});
}
}
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() {
@Override
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 أثناء التحديد.