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は間違っています、完了していません、そこに重要な通知機能がありませんfireTableCellUpdated(row, col);, setValueAtei ....

  2. オーバーライドするための適切な並べ替えColumnClass

  3. 基本的なソート機能については、定義することtable.setAutoCreateRowSorter(true)だけができます

  4. ソートとフィルタリングに関するオラクルのチュートリアルを読む

  5. またはにDefaultTableModel基づくデータ構造の場合、 を使用することをお勧めします。オーバーライドする必要はありません。すべての通知機能が実装され、正しく実装されています。Object[][]Vector<Vector>

  6. コード例

于 2012-12-06T09:57:58.997 に答える