So löschen Sie eine Zeile aus JTable in Java

Das Löschen einer Zeile in JTable in Java hängt von der Vorlage Ihres JTable ab. JTable verwendet standardmäßig  DefaultTableModel. Sie können jedoch auch Ihre eigene Table Model.

Delete in DefaultTableModel

DefaultTableModel speichert die Daten in einem Vector-Array, was das Löschen erleichtert, indem nur die flachen Elemente in dieser Zeile mit der Methode romoveRow(int line).

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

public class JTableExample erweitert JFrame{

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

public JTableExample(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);

DefaultTableModel dtm = new DefaultTableModel(data, title);
table.setModel(dtm);
this.getContentPane().add(new JScrollPane(table),BorderLayout.CENTER);
//Zeile löschen 2
((DefaultTableModel)table.getModel()).removeRow(1);
pack();
}

public static void main(String[] args) {
new JTableExample();
}
}
Output
jtable defaulttablemodel
Front
Löschen Sie eine Zeile in jtable defaulttablemodel
Nachher

Löschen in  AbstractTableModel

Wenn Sie ein eigenes Modell erstellt haben, das von   AbstractTableModel, dann müssen Sie auch die removeRow. Diese Implementierung hängt von der Art Ihrer Struktur ab, die Sie zum Speichern der Daten implementiert haben.

Wenn Sie beispielsweise ein ArrayList JTable-Modell verwenden, sieht es folgendermaßen aus:

class Model extends AbstractTableModel{

List< Objekt> data = new ArrayList< Objekt> ();
public void removeRow(int line){
this.data.remove(line);
}
}
JTable HashMap Model:

class Model extends AbstractTableModel{

HashMap< Ganzzahl, Objekt[]> data = neue HashMap< Ganzzahl, Objekt[]> ();
public void removeRow(int line){
this.data.remove(line);
}
}
Und wenn Sie ein zweidimensionales Array verwenden, dessen Elemente nicht dynamisch gespeichert werden, werden Sie Probleme haben, da es keine Funktion gibt, die eine Zeile aus einem Array entfernt. Sie erstellen also einen Offset, der eine unnötige Komplexität von (n-k)*m(k; line index), verursacht durch die Zeit und Anzahl der Operationen, die erforderlich sind, um alle Elemente zu versetzen.

References:
Oracle-Dokumentation: Die removeRow-Methode der DefaultableModelDeveloppez.com: Zeigt ein Array mit AbstractTableModel
okipa.be: Zeigt Daten in einem JTable