1

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

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

显然这是错误的。

请帮帮我。

4

1 回答 1

3
  1. AbstractTableModel错了,没有完成,缺少重要的通知 fe fireTableCellUpdated(row, col);in setValueAt, ei ....

  2. 正确排序覆盖ColumnClass

  3. 对于基本的排序功能,您只能table.setAutoCreateRowSorter(true)定义

  4. 阅读有关排序和过滤的 Oracles 教程

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

  6. 代码示例

于 2012-12-06T09:57:58.997 回答