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();
}
}
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:
References:
Oracle-Dokumentation: Die removeRow-Methode der DefaultableModel Developpez.com: Zeigt ein Array mit AbstractTableModel
okipa.be: Zeigt Daten in einem JTable
Wenn Sie beispielsweise ein ArrayList JTable-Modell verwenden, sieht es folgendermaßen aus:
class Model extends AbstractTableModel{JTable HashMap Model:
List< Objekt> data = new ArrayList< Objekt> ();
public void removeRow(int line){
this.data.remove(line);
}
}
class Model extends AbstractTableModel{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.
HashMap< Ganzzahl, Objekt[]> data = neue HashMap< Ganzzahl, Objekt[]> ();
public void removeRow(int line){
this.data.remove(line);
}
}
References:
Oracle-Dokumentation: Die removeRow-Methode der DefaultableModel
okipa.be: Zeigt Daten in einem JTable