Spec-Zone.ru › OpenJDK 21

Класс TableRowSorter<M extends TableModel>

java.lang.Object
javax.swing.RowSorter<M>
javax.swing.DefaultRowSorter<M,Integer>
javax.swing.table.TableRowSorter<M>
Type Parameters:
M - тип модели, который должен быть реализацией TableModel
public class TableRowSorter<M extends TableModel> extends DefaultRowSorter<M,Integer>
Реализация RowSorter, которая предоставляет сортировку и фильтрацию с помощью TableModel. Следующий пример демонстрирует добавление сортировки к JTable:
   TableModel myModel = createMyTableModel();
   JTable table = new JTable(myModel);
   table.setRowSorter(new TableRowSorter(myModel));
 
Это позволит настроить все необходимые связи, чтобы при соответствующем действии пользователя, например, щелчке по заголовку столбца, таблица визуально сортировалась.

Методы класса JTable для строк и модель выделения класса JTable относятся к представлению, а не к исходной модели. Поэтому необходимо преобразовывать значения между ними. Например, для получения выделения в терминах myModel необходимо преобразовать индексы:

   int[] selection = table.getSelectedRows();
   for (int i = 0; i < selection.length; i++) {
     selection[i] = table.convertRowIndexToModel(selection[i]);
   }
 
Аналогично, чтобы выделить строку в JTable на основе координаты из исходной модели, выполните обратное преобразование:
   table.setRowSelectionInterval(table.convertRowIndexToView(row),
                                 table.convertRowIndexToView(row));
 

Предыдущий пример предполагает, что фильтрация не включена. Если фильтрация включена, convertRowIndexToView вернёт -1 для расположений, которые не видны в представлении.

TableRowSorter использует Comparator для выполнения сравнений. Следующее определяет, как выбирается Comparator для столбца:

  1. Если для столбца был указан Comparator методом setComparator, используйте его.
  2. Если класс столбца, возвращённый методом getColumnClass, является String, используйте Comparator возвращённый методом Collator.getInstance().
  3. Если класс столбца реализует Comparable, используйте Comparator который вызывает метод compareTo.
  4. Если был указан TableStringConverter, используйте его для преобразования значений в String и затем используйте Comparator возвращённый методом Collator.getInstance().
  5. В противном случае, используйте Comparator возвращённый методом Collator.getInstance() по результатам вызова toString на объектах.

В дополнение к сортировке, TableRowSorter предоставляет возможность фильтрации. Фильтр задаётся с помощью метода setFilter. Следующий пример покажет только строки, содержащие строку "foo":

   TableModel myModel = createMyTableModel();
   TableRowSorter sorter = new TableRowSorter(myModel);
   sorter.setRowFilter(RowFilter.regexFilter(".*foo.*"));
   JTable table = new JTable(myModel);
   table.setRowSorter(sorter);
 

Если структура исходной модели изменяется (вызывается метод modelStructureChanged), следующие значения сбрасываются до значений по умолчанию: Comparator по столбцам, текущий порядок сортировки и возможность сортировки каждого столбца. Порядок сортировки по умолчанию - естественный (такой же, как в модели), и столбцы по умолчанию сортируемые.

TableRowSorter имеет один формальный параметр типа: тип модели. Передача типа, точно соответствующего вашей модели, позволяет фильтровать на основе вашей модели без приведения типов. Обратитесь к документации RowFilter для примера этого.

ПРЕДУПРЕЖДЕНИЕ: DefaultTableModel возвращает класс столбца типа Object. Следовательно, все сравнения будут выполняться с использованием toString. Это может быть излишне дорогостоящим. Если столбец содержит только один тип значения, например, Integer, вы должны переопределить getColumnClass и вернуть соответствующий Class. Это значительно повысит производительность этого класса.

Since:
1.6
See Also:
  • JTable
  • RowFilter
  • DefaultTableModel
  • Collator
  • Comparator

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в классе javax.swing.DefaultRowSorter

DefaultRowSorter.ModelWrapper<M,I>

Вложенные классы/интерфейсы, объявленные в классе javax.swing.RowSorter

RowSorter.SortKey

Краткое описание конструкторов

Конструктор Описание
TableRowSorter()
Создаёт TableRowSorter с пустой моделью.
TableRowSorter(M model)
Создаёт TableRowSorter, используя model в качестве базовой TableModel.

Краткое описание методов

Модификатор и тип Метод Описание
Comparator<?> getComparator(int column)
Возвращает Comparator для указанного столбца.
TableStringConverter getStringConverter()
Возвращает объект, ответственный за преобразование значений из модели в строки.
void setModel(M model)
Устанавливает TableModel для использования в качестве базовой модели для этого TableRowSorter.
void setStringConverter(TableStringConverter stringConverter)
Устанавливает объект, ответственный за преобразование значений из модели в строки.
protected boolean useToString(int column)
Возвращает, преобразовывать ли значение в строку перед сравнением при сортировке.

Методы, объявленные в классе javax.swing.DefaultRowSorter

allRowsChanged, convertRowIndexToModel, convertRowIndexToView, getMaxSortKeys, getModel, getModelRowCount, getModelWrapper, getRowFilter, getSortKeys, getSortsOnUpdates, getViewRowCount, isSortable, modelStructureChanged, rowsDeleted, rowsInserted, rowsUpdated, rowsUpdated, setComparator, setMaxSortKeys, setModelWrapper, setRowFilter, setSortable, setSortKeys, setSortsOnUpdates, sort, toggleSortOrder

Методы, объявленные в классе javax.swing.RowSorter

addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListener

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

TableRowSorter

public TableRowSorter()
Создаёт TableRowSorter с пустой моделью.

TableRowSorter

public TableRowSorter(M model)
Создаёт TableRowSorter, используя model в качестве базовой TableModel.
Параметры:
model - базовая TableModel для использования, null обрабатывается как пустая модель

Подробное описание методов

setModel

public void setModel(M model)
Устанавливает TableModel в качестве базовой модели для этого TableRowSorter. Значение null может быть использовано для установки пустой модели.
Параметры:
model - базовая модель для использования, или null

setStringConverter

public void setStringConverter(TableStringConverter stringConverter)
Устанавливает объект, отвечающий за преобразование значений из модели в строки. Если не null, это используется для преобразования любых значений объекта, у которых нет зарегистрированного Comparator, в строки.
Параметры:
stringConverter - объект, отвечающий за преобразование значений из модели в строки

getStringConverter

public TableStringConverter getStringConverter()
Возвращает объект, отвечающий за преобразование значений из модели в строки.
Возвращает:
объект, отвечающий за преобразование значений в строки.

getComparator

public Comparator<?> getComparator(int column)
Возвращает Comparator для указанного столбца. Если Comparator не был задан с использованием метода setComparator, будет возвращён Comparator на основе класса столбца (TableModel.getColumnClass) указанного столбца. Если класс столбца является String, возвращается Collator.getInstance. Если класс столбца реализует Comparable, возвращается частный Comparator, вызывающий метод compareTo. В противном случае возвращается Collator.getInstance.
Переопределяет:
getComparator в классе DefaultRowSorter<M extends TableModel,Integer>
Параметры:
column - столбец, для которого нужно получить Comparator, в терминах базовой модели
Возвращает:
Comparator для указанного столбца
Исключения:
IndexOutOfBoundsException - если столбец находится вне диапазона базовой модели

useToString

protected boolean useToString(int column)
Возвращает, следует ли преобразовывать значение в строку перед выполнением сравнений при сортировке. Если true, будет использоваться ModelWrapper.getStringValueAt, в противном случае ModelWrapper.getValueAt. От подклассов, таких как TableRowSorter, требуется учитывать это значение в реализации метода ModelWrapper.
Переопределяет:
useToString в классе DefaultRowSorter<M extends TableModel,Integer>
Параметры:
column - индекс столбца для проверки, в терминах базовой модели
Возвращает:
true, если значения должны быть преобразованы в строки перед выполнением сравнений при сортировке
Исключения:
IndexOutOfBoundsException - если column не является допустимым

© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/javax/swing/table/TableRowSorter.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API