Spec-Zone.ru › OpenJDK 27

Класс TableRowSorter<M extends TableModel>

java.lang.Object
javax.swing.RowSorter<M>
javax.swing.DefaultRowSorter<M,Integer>
javax.swing.table.TableRowSorter<M>
Параметры типа:
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. Это значительно повысит производительность данного класса.

С версии:
1.6
См. также:
  • JTable
  • RowFilter
  • DefaultTableModel
  • Collator
  • Comparator

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

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

DefaultRowSorter.ModelWrapper<M,I>
Модификатор и тип Класс Описание
protected static class  DefaultRowSorter.ModelWrapper<M,I>
DefaultRowSorter.ModelWrapper отвечает за предоставление данных, сортируемых с помощью DefaultRowSorter.

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

RowSorter.SortKey
Модификатор и тип Класс Описание
static class  RowSorter.SortKey
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)
Возвращает значение, указывающее, следует ли преобразовывать значение в строку перед сравнением при сортировке.

Методы, объявленные в классе 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
Модификатор и тип Метод Описание
void allRowsChanged()
Вызывается, когда содержимое базовой модели полностью изменилось.
int convertRowIndexToModel(int index)
Возвращает местоположение index в терминах базовой модели.
int convertRowIndexToView(int index)
Возвращает местоположение index в терминах представления.
int getMaxSortKeys()
Возвращает максимальное количество ключей сортировки.
final M getModel()
Возвращает базовую модель.
int getModelRowCount()
Возвращает количество строк в базовой модели.
protected final DefaultRowSorter.ModelWrapper<M,Integer> getModelWrapper()
Возвращает оболочку модели, предоставляющую сортируемые и фильтруемые данные.
RowFilter<? super M, ? super Integer> getRowFilter()
Возвращает фильтр, определяющий, какие строки следует скрыть из представления, если таковые имеются.
List<? extends RowSorter.SortKey> getSortKeys()
Возвращает текущие ключи сортировки.
boolean getSortsOnUpdates()
Возвращает true, если при обновлении базовой модели должна выполняться сортировка; в противном случае возвращает false.
int getViewRowCount()
Возвращает количество строк в представлении.
boolean isSortable(int column)
Возвращает true, если указанный столбец доступен для сортировки; в противном случае — false.
void modelStructureChanged()
Вызывается, когда структура базовой модели полностью изменилась.
void rowsDeleted(int firstRow, int endRow)
Вызывается, когда из базовой модели удаляются строки в указанном диапазоне (включительно).
void rowsInserted(int firstRow, int endRow)
Вызывается, когда в базовую модель вставляются строки в указанном диапазоне (включительно).
void rowsUpdated(int firstRow, int endRow)
Вызывается, когда строки базовой модели изменяются в указанном диапазоне (включительно).
void rowsUpdated(int firstRow, int endRow, int column)
Вызывается, когда столбец в строках базовой модели обновляется в указанном диапазоне.
void setComparator(int column, Comparator<?> comparator)
Задаёт Comparator, используемый при сортировке указанного столбца.
void setMaxSortKeys(int max)
Задаёт максимальное количество ключей сортировки.
protected final void setModelWrapper(DefaultRowSorter.ModelWrapper<M,Integer> modelWrapper)
Задаёт оболочку модели, предоставляющую сортируемые и фильтруемые данные.
void setRowFilter(RowFilter<? super M, ? super Integer> filter)
Задаёт фильтр, определяющий, какие строки следует скрыть из представления, если таковые имеются.
void setSortable(int column, boolean sortable)
Задаёт, доступен ли указанный столбец для сортировки.
void setSortKeys(List<? extends RowSorter.SortKey> sortKeys)
Задаёт ключи сортировки.
void setSortsOnUpdates(boolean sortsOnUpdates)
Если значение равно true, указывает, что при обновлении базовой модели должна выполняться сортировка (вызывается rowsUpdated).
void sort()
Сортирует и фильтрует строки в представлении на основе ключей сортировки столбцов, которые в данный момент сортируются, и фильтра, если он связан с этим средством сортировки.
void toggleSortOrder(int column)
Изменяет порядок сортировки с восходящего на нисходящий (или с нисходящего на восходящий), если указанный столбец уже является основным столбцом сортировки; в противном случае назначает указанный столбец основным и задаёт восходящий порядок сортировки.

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

addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListener
Модификатор и тип Метод Описание
void addRowSorterListener(RowSorterListener l)
Добавляет RowSorterListener для получения уведомлений об этом RowSorter.
protected void fireRowSorterChanged(int[] lastRowIndexToModel)
Уведомляет слушателя об изменении соответствия.
protected void fireSortOrderChanged()
Уведомляет слушателя об изменении порядка сортировки.
void removeRowSorterListener(RowSorterListener l)
Удаляет RowSorterListener.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка времени.

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

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 недопустим

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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.

Spec-Zone.ru

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