Как установить RowSorter для пользовательской табличной модели?

Я определил пользовательскую табличную модель, как показано ниже

  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 ответ

  1. ваш AbstractTableModel неправильно, не завершено, отсутствуют важные уведомители, например fireTableCellUpdated(row, col); в setValueAtэй....

  2. для правильной сортировки переопределитьColumnClass

  3. для основных функций сортировки вы можете определить table.setAutoCreateRowSorter(true) только

  4. Прочитайте учебник о Сортировке и фильтрации.

  5. Я бы предложил использовать DefaultTableModelдля структуры данных на основе Object[][] или же Vector<Vector>нет необходимости переопределять все уведомители реализованы и правильно

  6. пример кода

Другие вопросы по тегам