كيفية حذف سطر من JTable في جافا

يعتمد حذف صف في JTable في Java على قالب JTable الخاص بك. استخدامات JTable افتراضيا  DefaultTableModel. ومع ذلك ، يمكنك أيضا تحديد Table Model< / a>.

Delete in DefaultTableModel

DefaultTableModel يخزن البيانات في صفيف متجه ، مما يسهل الحذف عن طريق إزالة العناصر المسطحة فقط في هذا الصف باستخدام طريقة romoveRow(int line).

import javax.swing.JFrame; 
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;

public class JTableExample يمتد JFrame{

Object[][] data = {{9,8,7,6},{7,6,5},{6,5,4}};
String[] title = {"c1" ، "c2" ، "c3"} ؛

JTableExample() العامة{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible (صحيح) ؛

DefaultTableModel dtm = DefaultTableModel جديد (البيانات ، العنوان) ؛
table.setModel (dtm) ؛
this.getContentPane () .add (JScrollPane الجديد (الجدول) ، BorderLayout.CENTER) ؛
//delete row 2
((DefaultTableModel)table.getModel()).removeRow(1);
حزمة ();
}

الفراغ العام الثابت الرئيسي (سلسلة [] args) {
JTableExample() الجديد ();
}
}
< / pre>< / div>
Output
jtable defaulttablemodel< / a>< / td>< / tr>
الأمامية< / td>< / tr>< / tbody>< / table>
حذف صف في jtable defaulttablemodel< / a>< / td>< / tr>
بعد

حذف في  AbstractTableModel

إذا كنت قد أنشأت نموذجك الخاص الذي يرث من  AbstractTableModel< / b> ، فيجب عليك أيضا تنفيذ نمط إزالةالصف. يعتمد هذا التنفيذ على طبيعة البنية التي قمت بتنفيذها لتخزين البيانات.

على سبيل المثال ، إذا كنت تستخدم نموذج ArrayList JTable< / b> ، فسيبدو كما يلي:

< pre class = "prettyprint lang-java">class Model يمتد AbstractTableModel {

List< الكائن> البيانات = قائمة الصفيف الجديدة< الكائن> ();
الفراغ العام removeRow(int line){
this.data.remove(line);
}
}
< / pre>JTable HashMap Model< / b>:

class Model يمتد AbstractTableModel {

< عدد صحيح الكائن = ""><كائن عدد صحيح = ""> HashMap< عدد صحيح، كائن[]> البيانات = HashMap جديد< عدد صحيح، كائن[]> ();
الفراغ العام removeRow(int line){
this.data.remove(line);
}
}
وإذا كنت تستخدم مصفوفة ثنائية الأبعاد لا يتم تخزين عناصرها ديناميكيا ، فستواجه مشكلات ، لأنه لا توجد وظيفة تزيل صفا من صفيف. لذلك ، ستقوم بإنشاء إزاحة سيكون لها تعقيد غير ضروري من (n-k) * m (k ؛ فهرس الخط) الناجم عن الوقت وعدد العمليات المطلوبة لتعويض جميع العناصر.

References:
وثائق أوراكل: طريقة removeRow لفئة DefaultableModel
Developpez.com: عرض صفيف باستخدام AbstractTableModel< / a>
okipa.be: عرض البيانات في JTable