Die AbstractTableModel-Klasse wird zur Darstellung der Daten in einer JTable verwendet. Es bietet Methoden zum Abrufen der Daten für jede Zelle in der Tabelle und zum Hinzufügen oder Entfernen von Zeilen und Spalten zur Tabelle.
Im bereitgestellten Code wird die TableModel-Klasse verwendet, um die Ergebnisse einer Datenbank anzuzeigen Abfrage in einer JTable. Es gibt jedoch zwei Probleme mit der Art und Weise, wie die Tabelle angezeigt wird.
Hier ist eine modifizierte Version der TableModel-Klasse, die diese beiden Probleme behebt:
import java.util.List; import javax.swing.table.AbstractTableModel; public class TableModel extends AbstractTableModel { private List<String[]> data; private String[] columnNames; public TableModel(List<String[]> data, String[] columnNames) { this.data = data; this.columnNames = columnNames; } @Override public int getRowCount() { return data.size(); } @Override public int getColumnCount() { return columnNames.length; } @Override public Object getValueAt(int rowIndex, int columnIndex) { return data.get(rowIndex)[columnIndex]; } @Override public String getColumnName(int columnIndex) { return columnNames[columnIndex]; } public void addRow(String[] rowData) { data.add(rowData); fireTableRowsInserted(data.size() - 1, data.size() - 1); } public void removeRow(int rowIndex) { data.remove(rowIndex); fireTableRowsDeleted(rowIndex, rowIndex); } public void updateData(List<String[]> newData) { data = newData; fireTableDataChanged(); } }
Dies Die modifizierte Version der TableModel-Klasse enthält die folgenden Änderungen:
Diese Änderungen beheben die beiden Probleme mit der Art und Weise, wie die Tabelle angezeigt wird.
Das obige ist der detaillierte Inhalt vonWarum wird meine AbstractTableModel-GUI nicht korrekt aktualisiert, wenn sich Daten ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!