The AbstractTableModel class is used to represent the data in a JTable. It provides methods to retrieve the data for each cell in the table, and to add or remove rows and columns from the table.
In the provided code, the TableModel class is being used to display the results of a database query in a JTable. However, there are two problems with the way that the table is being displayed.
Here is a modified version of the TableModel class that fixes these two problems:
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(); } }
This modified version of the TableModel class includes the following changes:
These changes will fix the two problems with the way that the table is being displayed.
The above is the detailed content of Why is my AbstractTableModel GUI not updating correctly when data changes?. For more information, please follow other related articles on the PHP Chinese website!