Сохранение пользовательской сортировки в jtable после изменения структуры таблицы

У меня есть jtable, где для данных применяется пользовательская сортировка. Когда таблица запускается изначально, в ней есть только столбцы со строковыми данными, поэтому сортировка проходит нормально. После изменения структуры таблицы (добавления новых столбцов, в которых есть комбинация Sting("N/A") и двойных данных в тех же столбцах, пользовательский алгоритм сортировки, похоже, удаляется. Теперь столбцы с только строковыми данными все еще сортируются, потому что по умолчанию сортировка с Jtable, но столбцы со смешанными данными дает classcastException. Могу ли я сохранить пользовательскую сортировку или повторно применить ее, как только произойдет событие tableStructureChange.

2 ответа

public void sortTable(){
    TableRowSorter<TableModel> sort = new TableRowSorter<TableModel>(Jtable.getModel());
   Jtable.setRowSorter(sort);

   List<RowSorter.SortKey> sortKeys = new ArrayList<>();
   sortKeys.add(new RowSorter.SortKey(4, SortOrder.ASCENDING));
   sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
   sorter.setSortKeys(sortKeys);
    }

это то, как вы должны сортировать Jtable. попробуйте этот код и напишите, если есть какие-либо исключения

Вопрос в том, почему tableStructureChanged событие генерируется? Это означает, что структура столбцов таблицы изменилась, так как вы узнаете, что такие же столбцы будут существовать?

Если вы делаете обновление таблицы, тогда зачем вы создаете совершенно новый TableMode. Вместо этого вы можете удалить все строки данных из таблицы (т. Е. Использовать setRowCount(0) в DefaultTableModel) и затем вставить новые строки данных. Таким образом, tableStructureEvent не будет сгенерировано.

Другой вариант - сохранить информацию о сортировке и воссоздать сортировщик. Вы можете получить текущие ключи сортировки из DefaultRowSorter. Итак, основная логика будет:

  1. getSortKeys ()
  2. обновить TableModel
  3. воссоздать сортировщик
  4. setSortKeys(...)

Проверка: попытка сохранить положение сортировщика после обновления таблицы для рабочего примера.

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