Kelas AbstractTableModel digunakan untuk mewakili data dalam JTable. Ia menyediakan kaedah untuk mendapatkan semula data bagi setiap sel dalam jadual dan untuk menambah atau mengalih keluar baris dan lajur daripada jadual.
Dalam kod yang disediakan, kelas TableModel sedang digunakan untuk memaparkan hasil pangkalan data pertanyaan dalam JTable. Walau bagaimanapun, terdapat dua masalah dengan cara jadual dipaparkan.
Berikut ialah versi diubah suai bagi kelas TableModel yang membetulkan dua masalah ini:
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(); } }
Ini versi diubah suai kelas TableModel termasuk perubahan berikut:
Perubahan ini akan membetulkan dua masalah dengan cara jadual dipaparkan.
Atas ialah kandungan terperinci Mengapakah GUI AbstractTableModel saya tidak dikemas kini dengan betul apabila data berubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!