我已经定义了一个自定义表模型,如下所示
class TModel extends AbstractTableModel {
Object col[] = null;
Object[][] data = null;
public void setCollen(Object[] col) {
this.col = col;
}
public void setObj(Object[][] oo) {
this.data = oo;
}
public int getColumnCount() {
return col.length;
}
public int getRowCount() {
return data.length;
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public String getColumnName(int column) {
return (String) col[column];
}
public boolean isCellEditable(int row, int col) {
return false;
}
public void setValueAt(Object aValue, int row, int column) {
data[row][column] = aValue;
}
public void clear() {
data = null;
}
}
我定义了一个像这样的表
TModel tableModel = new TModel();
JTable table = new JTable(tableModel);
现在我想使用方法table.setRowSorter()
对表的数据进行排序。
我试着写这样的代码
table.setRowSorter(new TableRowSorter(tableModel));
显然这是错误的。
请帮帮我。
答案 0 :(得分:3)
您的AbstractTableModel
错误,未完成,缺少重要的通知符f.e. fireTableCellUpdated(row, col);
中的setValueAt
,e.i。 ....
有关基本排序功能,您只能定义table.setAutoCreateRowSorter(true)
我建议使用DefaultTableModel
,对于基于Object[][]
或Vector<Vector>
的数据结构,不需要覆盖所有通知都是正确实现的