Swingطريقة إضافة و حذف بيانات من الـ JTable
المثال التالي يعلمك طريقة جعل المستخدم يدخل البيانات في الجدول, بالإضافة إلى جعله قادر على حذف البيانات التي أدخلها.
مثال
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JButton; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import javax.swing.JScrollPane; public class Main { // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها static JFrame frame = new JFrame("JTable demo"); static JLabel label_1 = new JLabel("ID"); static JLabel label_2 = new JLabel("Name"); static JLabel label_3 = new JLabel("Phone"); static JTextField textField_1 = new JTextField(); static JTextField textField_2 = new JTextField(); static JTextField textField_3 = new JTextField(); static JButton btn_add = new JButton("Add"); static JButton btn_clear = new JButton("Clear"); static JButton btn_delete = new JButton("Delete Selected"); static JButton btn_deleteAll = new JButton("Delete All"); static DefaultTableModel model = new DefaultTableModel(); static JTable table = new JTable( model ); static JScrollPane tableScroller = new JScrollPane( table ); public static void main(String[] args) { // هنا قمنا بوضع أسماء الأعمدة التي ستظهر في الجدول model.addColumn("ID"); model.addColumn("Name"); model.addColumn("Phone"); // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ label_1.setBounds(40, 50, 50, 20); label_2.setBounds(40, 90, 50, 20); label_3.setBounds(40, 130, 50, 20); textField_1.setBounds(100, 50, 120, 20); textField_2.setBounds(100, 90, 120, 20); textField_3.setBounds(100, 130, 120, 20); btn_add.setBounds(150, 180, 70, 30); btn_clear.setBounds(70, 180, 70, 30); btn_delete.setBounds(315, 250, 140, 30); btn_deleteAll.setBounds(470, 250, 140, 30); tableScroller.setBounds(280, 50, 370, 160); // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ frame.add(label_1); frame.add(label_2); frame.add(label_3); frame.add(textField_1); frame.add(textField_2); frame.add(textField_3); frame.add(btn_add); frame.add(btn_clear); frame.add(btn_delete); frame.add(btn_deleteAll); frame.add(tableScroller); // frame هنا قمنا بتحديد خصائص الـ frame.setSize(710, 350); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(null); frame.setVisible(true); // btn_add هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ btn_add.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // إذا قام المستخدم بإدخال بيانات في مربعات النصوص الثلاثة if( !textField_1.getText().equals("") && !textField_2.getText().equals("") && !textField_3.getText().equals("") ) { // عندها سيتم تخزينهم في متغيرات بشكل مؤقت String id = textField_1.getText(); String name = textField_2.getText(); String phone = textField_3.getText(); // الخاصة بالجدول model بعدها سيتم تخزينهم في مصفوفة واحدة, ثم إضافتها في الـ String[] userInfo = { id, name, phone }; model.addRow( userInfo ); } } }); // btn_clear هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ btn_clear.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // سيتم مسح النصوص المدخلة في مربعات النصوص الثلاثة textField_1.setText(""); textField_2.setText(""); textField_3.setText(""); } }); // btn_delete هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ btn_delete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // إذا كان المستخدم قد قام بتحديد سطر واحد على الأقل من الجدول if( table.getSelectedRowCount() > 0 ) { // الخاص فيه index كل سطر قام المستخدم بتحديده من الجدول بعدها سيتم حذف كل سطر من خلال رقم الـ index سيتم تخزين رقم int[] selectedIndices = table.getSelectedRows(); for( int i=selectedIndices.length-1; i>=0; i-- ) { model.removeRow( selectedIndices[i] ); } } } }); // btn_deleteAll هنا نضع الأوامر التي نريد تنفيذها عند النقر على الـ btn_deleteAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // يساوي 0. أي سيتم مسح جميع العناصر الموجودة فيها model هنا سيتم جعل عدد أسطر الـ model.setRowCount(0); } }); } }
ستظهر لك النافذة التالية عند التشغيل.
ملاحظة لإلغاء أكثر من سطر في نفس الوقت, أبق إصبعك على الزر Ctrl أثناء تحديد الأسطر, بعدها أنقر على الزر Delete Selected لإلغائهم.