如何为自定义tablemodel设置setRowSorter?

时间:2012-12-06 02:45:31

标签: java swing jtable tablemodel tablerowsorter

我已经定义了一个自定义表模型,如下所示

  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));

显然这是错误的。

请帮帮我。

1 个答案:

答案 0 :(得分:3)

  1. 您的AbstractTableModel错误,未完成,缺少重要的通知符f.e. fireTableCellUpdated(row, col);中的setValueAt,e.i。 ....

  2. for proper sortingoverride ColumnClass

  3. 有关基本排序功能,您只能定义table.setAutoCreateRowSorter(true)

  4. 阅读Oracles tutorial about Sorting and Filtering

  5. 我建议使用DefaultTableModel,对于基于Object[][]Vector<Vector>的数据结构,不需要覆盖所有通知都是正确实现的

  6. code example