Spec-Zone.ru › OpenJDK 25

Класс DefaultRowSorter<M,I>

java.lang.Object
javax.swing.RowSorter<M>
javax.swing.DefaultRowSorter<M,I>
Параметры типа:
M - тип модели
I - тип идентификатора, передаваемого в RowFilter
Непосредственные известные подклассы:
TableRowSorter
public abstract class DefaultRowSorter<M,I> extends RowSorter<M>
Реализация RowSorter, обеспечивающая сортировку и фильтрацию табличной модели данных. За исключением создания и установки RowSorter, обычно нет необходимости взаимодействовать с ним напрямую. См. TableRowSorter — конкретную реализацию RowSorter для JTable.

Сортировка выполняется согласно текущим SortKey в порядке их следования. Если два объекта равны (Comparator для столбца возвращает 0), используется следующий SortKey. Если SortKey больше не осталось или порядок UNSORTED, используется порядок строк в модели.

Сортировка каждого столбца выполняется с помощью Comparator, который можно указать с помощью метода setComparator. Если Comparator не указан, к результатам вызова toString для базовых объектов применяется Comparator, возвращаемый методом Collator.getInstance(). Comparator никогда не передается null. Значение null считается предшествующим значению, не являющемуся null, а два значения null считаются равными.

Если указать Comparator, приводящий аргумент к типу, отличному от типа, предоставляемого моделью, при сортировке будет выброшено исключение ClassCastException.

Помимо сортировки, DefaultRowSorter позволяет фильтровать строки. Фильтрация выполняется с помощью RowFilter, который задается методом setRowFilter. Если фильтр не задан, включаются все строки.

По умолчанию строки не отсортированы (расположены так же, как в модели), а каждый столбец доступен для сортировки. Документация по умолчанию Comparator приведена в подклассах (например, TableRowSorter).

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

DefaultRowSorter — абстрактный класс. Конкретные подклассы должны предоставлять доступ к базовым данным, вызывая setModelWrapper. Метод setModelWrapper должен быть вызван вскоре после вызова конструктора, в идеале — из конструктора подкласса. При использовании DefaultRowSorter без указания ModelWrapper поведение не определено.

У DefaultRowSorter два формальных параметра типа. Первый параметр типа соответствует классу модели, например DefaultTableModel. Второй параметр типа соответствует классу идентификатора, передаваемого в RowFilter. Подробнее о параметрах типа см. TableRowSorter и RowFilter.

Начиная с:
1.6
См. также:
  • TableRowSorter
  • DefaultTableModel
  • Collator

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

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

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

RowSorter.SortKey

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

Конструктор Описание
DefaultRowSorter()
Создает пустой DefaultRowSorter.

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

Модификатор и тип Метод Описание
void allRowsChanged()
Вызывается, когда содержимое базовой модели полностью изменилось.
int convertRowIndexToModel(int index)
Возвращает положение index относительно базовой модели.
int convertRowIndexToView(int index)
Возвращает положение index относительно представления.
Comparator<?> getComparator(int column)
Возвращает Comparator для указанного столбца.
int getMaxSortKeys()
Возвращает максимальное количество ключей сортировки.
final M getModel()
Возвращает базовую модель.
int getModelRowCount()
Возвращает количество строк в базовой модели.
protected final DefaultRowSorter.ModelWrapper<M,I> getModelWrapper()
Возвращает обертку модели, предоставляющую сортируемые и фильтруемые данные.
RowFilter<? super M, ? super I> 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,I> modelWrapper)
Устанавливает обертку модели, предоставляющую сортируемые и фильтруемые данные.
void setRowFilter(RowFilter<? super M, ? super I> 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)
Меняет порядок сортировки с возрастания на убывание (или с убывания на возрастание), если указанный столбец уже является основным сортируемым столбцом; в противном случае делает указанный столбец основным сортируемым столбцом и устанавливает сортировку по возрастанию.
protected boolean useToString(int column)
Возвращает, следует ли преобразовывать значение в строку перед сравнением при сортировке.

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

addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListener

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

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

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

DefaultRowSorter

public DefaultRowSorter()
Создает пустой DefaultRowSorter.

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

setModelWrapper

protected final void setModelWrapper(DefaultRowSorter.ModelWrapper<M,I> modelWrapper)
Задает оболочку модели, предоставляющую данные для сортировки и фильтрации.
Параметры:
modelWrapper — оболочка модели, отвечающая за предоставление данных для сортировки и фильтрации
Исключения:
IllegalArgumentException — если modelWrapper имеет значение null

getModelWrapper

protected final DefaultRowSorter.ModelWrapper<M,I> getModelWrapper()
Возвращает оболочку модели, предоставляющую данные для сортировки и фильтрации.
Возвращает:
оболочку модели, отвечающую за предоставление данных для сортировки и фильтрации

getModel

public final M getModel()
Возвращает базовую модель.
Определено в:
getModel в классе RowSorter<M>
Возвращает:
базовую модель

setSortable

public void setSortable(int column, boolean sortable)
Задает, можно ли сортировать указанный столбец. Указанное значение проверяется только при вызове toggleSortOrder. Сортировка по столбцу, помеченному как несортируемый, все еще возможна, если задать ключи сортировки напрямую. По умолчанию — true.
Параметры:
column — столбец, для которого нужно включить или отключить сортировку, в терминах базовой модели
sortable — можно ли сортировать указанный столбец
Исключения:
IndexOutOfBoundsException — если column находится за пределами диапазона модели
См. также:
  • toggleSortOrder(int)
  • setSortKeys(List)

isSortable

public boolean isSortable(int column)
Возвращает true, если указанный столбец доступен для сортировки; в противном случае — false.
Параметры:
column — столбец, для которого нужно проверить возможность сортировки, в терминах базовой модели
Возвращает:
true, если столбец доступен для сортировки
Исключения:
IndexOutOfBoundsException — если столбец находится за пределами диапазона базовой модели

setSortKeys

public void setSortKeys(List<? extends RowSorter.SortKey> sortKeys)
Задает ключи сортировки. Создается копия переданного List; последующие изменения переданного List не влияют на этот DefaultRowSorter. Если ключи сортировки изменились, запускается сортировка.
Определено в:
setSortKeys в классе RowSorter<M>
Параметры:
sortKeys — новый SortKeys; null — сокращенная запись для указания пустого списка, означающего, что представление не должно быть отсортировано
Исключения:
IllegalArgumentException — если какое-либо значение в sortKeys равно null или имеет индекс столбца за пределами диапазона модели

getSortKeys

public List<? extends RowSorter.SortKey> getSortKeys()
Возвращает текущие ключи сортировки. Возвращается неизменяемый non-null List. Чтобы изменить ключи сортировки, создайте копию возвращенного List, измените ее и вызовите setSortKeys с новым списком.
Определено в:
getSortKeys в классе RowSorter<M>
Возвращает:
текущий порядок сортировки

setMaxSortKeys

public void setMaxSortKeys(int max)
Задает максимальное количество ключей сортировки. Количество ключей сортировки определяет, как разрешаются совпадения значений при сортировке. Например, предположим, что создан сортировщик строк таблицы и для него вызван setMaxSortKeys(2). Пользователь щелкает заголовок столбца 1, в результате чего строки таблицы сортируются по значениям в столбце 1. Затем пользователь щелкает заголовок столбца 2, в результате чего таблица сортируется по значениям в столбце 2; если какие-либо значения в столбце 2 совпадают, соответствующие строки упорядочиваются по значениям в столбце 1. В этом случае говорят, что строки отсортированы прежде всего по столбцу 2, а затем по столбцу 1. Если пользователь затем щелкнет заголовок столбца 3, значения будут отсортированы прежде всего по столбцу 3, а затем по столбцу 2. Поскольку с помощью setMaxSortKeys максимальное количество ключей сортировки установлено равным 2, столбец 1 больше не влияет на порядок.

Максимальное количество ключей сортировки обеспечивается методом toggleSortOrder. Можно указать больше ключей сортировки, напрямую вызвав setSortKeys, и все они будут учитываться. Однако, если впоследствии будет вызван toggleSortOrder, будет применено ограничение на максимальное количество ключей сортировки. Значение по умолчанию — 3.

Параметры:
max — максимальное количество ключей сортировки
Исключения:
IllegalArgumentException — если max < 1

getMaxSortKeys

public int getMaxSortKeys()
Возвращает максимальное количество ключей сортировки.
Возвращает:
максимальное количество ключей сортировки

setSortsOnUpdates

public void setSortsOnUpdates(boolean sortsOnUpdates)
Если значение равно true, сортировка будет выполняться при обновлении базовой модели (вызывается rowsUpdated). Например, если задано значение true и пользователь редактирует запись, ее положение в представлении может измениться. По умолчанию — false.
Параметры:
sortsOnUpdates — выполнять ли сортировку при событиях обновления

getSortsOnUpdates

public boolean getSortsOnUpdates()
Возвращает true, если при обновлении базовой модели следует выполнять сортировку; в противном случае возвращает false.
Возвращает:
следует ли выполнять сортировку при обновлении модели

setRowFilter

public void setRowFilter(RowFilter<? super M, ? super I> filter)
Задает фильтр, определяющий, какие строки следует скрыть в представлении. Фильтр применяется до сортировки. Значение null означает, что следует включить все значения из модели.

Метод include объекта RowFilter получает Entry, оборачивающий базовую модель. Количество столбцов в Entry соответствует количеству столбцов в ModelWrapper. Идентификатор также берется из ModelWrapper.

Этот метод запускает сортировку.

Параметры:
filter — фильтр, используемый для определения включаемых записей

getRowFilter

public RowFilter<? super M, ? super I> getRowFilter()
Возвращает фильтр, определяющий, какие строки следует скрыть в представлении.
Возвращает:
фильтр

toggleSortOrder

public void toggleSortOrder(int column)
Меняет порядок сортировки с возрастающего на убывающий (или с убывающего на возрастающий), если указанный столбец уже является основным столбцом сортировки; в противном случае делает указанный столбец основным столбцом сортировки с возрастающим порядком. Если указанный столбец недоступен для сортировки, этот метод ничего не делает.
Определено в:
toggleSortOrder в классе RowSorter<M>
Параметры:
column — индекс столбца, который нужно сделать основным столбцом сортировки, в терминах базовой модели
Исключения:
IndexOutOfBoundsException — если столбец находится за пределами диапазона базовой модели
См. также:
  • setSortable(int,boolean)
  • setMaxSortKeys(int)

convertRowIndexToView

public int convertRowIndexToView(int index)
Возвращает положение index в терминах представления. То есть для строки index в координатах базовой модели этот метод возвращает индекс строки в представлении.
Определено в:
convertRowIndexToView в классе RowSorter<M>
Параметры:
index — индекс строки в терминах базовой модели
Возвращает:
индекс строки в представлении или -1, если индекс отфильтрован и отсутствует в представлении
Исключения:
IndexOutOfBoundsException — если index находится за пределами диапазона модели

convertRowIndexToModel

public int convertRowIndexToModel(int index)
Возвращает положение index в терминах базовой модели. То есть для строки index в координатах представления этот метод возвращает индекс строки в базовой модели.
Определено в:
convertRowIndexToModel в классе RowSorter<M>
Параметры:
index — индекс строки в терминах базового представления
Возвращает:
индекс строки в терминах представления
Исключения:
IndexOutOfBoundsException — если index находится за пределами диапазона представления

sort

public void sort()
Сортирует и фильтрует строки в представлении на основе ключей сортировки текущих столбцов сортировки и фильтра, если он задан для этого сортировщика. Пустой список sortKeys означает, что представление не должно быть отсортировано и должно соответствовать модели.
См. также:
  • setRowFilter(RowFilter)
  • setSortKeys(List)

useToString

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

setComparator

public void setComparator(int column, Comparator<?> comparator)
Задает Comparator, используемый для сортировки указанного столбца. Сортировка при этом не запускается. Чтобы выполнить сортировку после установки компаратора, необходимо явно вызвать sort.
Параметры:
column — индекс столбца, для которого используется Comparator, в терминах базовой модели
comparator — используемый Comparator
Исключения:
IndexOutOfBoundsException — если column находится за пределами диапазона базовой модели

getComparator

public Comparator<?> getComparator(int column)
Возвращает Comparator для указанного столбца. Возвращает null, если для столбца не задан Comparator.
Параметры:
column — столбец, для которого нужно получить Comparator, в терминах базовой модели
Возвращает:
Comparator для указанного столбца
Исключения:
IndexOutOfBoundsException — если столбец находится за пределами диапазона базовой модели

getViewRowCount

public int getViewRowCount()
Возвращает количество строк в представлении. Если содержимое было отфильтровано, это значение может отличаться от количества строк в базовой модели.
Определено в:
getViewRowCount в классе RowSorter<M>
Возвращает:
количество строк в представлении
См. также:
  • RowSorter.getModelRowCount()

getModelRowCount

public int getModelRowCount()
Возвращает количество строк в базовой модели.
Определено в:
getModelRowCount в классе RowSorter<M>
Возвращает:
количество строк в базовой модели
См. также:
  • RowSorter.getViewRowCount()

modelStructureChanged

public void modelStructureChanged()
Вызывается при полном изменении структуры базовой модели. Например, этот метод вызывается при изменении количества столбцов в TableModel.

Обычно этот метод не вызывается напрямую. Он является открытым, чтобы классы представлений могли его вызывать.

Определено в:
modelStructureChanged в классе RowSorter<M>

allRowsChanged

public void allRowsChanged()
Вызывается при полном изменении содержимого базовой модели. Структура таблицы остается прежней, изменяется только ее содержимое. Обычно это событие отправляется, когда слишком затратно описывать изменение с помощью других методов.

Обычно этот метод не вызывается напрямую. Он является открытым, чтобы классы представлений могли его вызывать.

Определено в:
allRowsChanged в классе RowSorter<M>

rowsInserted

public void rowsInserted(int firstRow, int endRow)
Вызывается при вставке строк в базовую модель в указанном диапазоне (включительно).

Аргументы задают индексы затронутого диапазона. Первый аргумент относится к модели до изменения и должен быть меньше или равен размеру модели до изменения. Второй аргумент относится к модели после изменения и должен быть меньше размера модели после изменения. Например, если модель содержит 5 строк и в ее конец добавляются 3 элемента, индексы равны 5 и 7.

Обычно этот метод не вызывается напрямую. Он является открытым, чтобы классы представлений могли его вызывать.

Определено в:
rowsInserted в классе RowSorter<M>
Параметры:
firstRow — первая строка
endRow — последняя строка
Исключения:
IndexOutOfBoundsException — если любой из аргументов недопустим или firstRow > endRow

rowsDeleted

public void rowsDeleted(int firstRow, int endRow)
Вызывается при удалении строк из базовой модели в указанном диапазоне (включительно).

Аргументы задают индексы затронутого диапазона и относятся к модели до изменения. Например, если модель содержит 5 строк и из ее конца удаляются 3 элемента, индексы равны 2 и 4.

Обычно этот метод не вызывается напрямую. Он является открытым, чтобы классы представлений могли его вызывать.

Определено в:
rowsDeleted в классе RowSorter<M>
Параметры:
firstRow — первая строка
endRow — последняя строка
Исключения:
IndexOutOfBoundsException — если любой из аргументов находится за пределами диапазона модели до изменения или firstRow > endRow

rowsUpdated

public void rowsUpdated(int firstRow, int endRow)
Вызывается при изменении строк базовой модели в указанном диапазоне (включительно).

Обычно этот метод не вызывается напрямую. Он является открытым, чтобы классы представлений могли его вызывать.

Определено в:
rowsUpdated в классе RowSorter<M>
Параметры:
firstRow — первая строка в терминах базовой модели
endRow — последняя строка в терминах базовой модели
Исключения:
IndexOutOfBoundsException — если любой из аргументов находится за пределами диапазона базовой модели или firstRow > endRow

rowsUpdated

public void rowsUpdated(int firstRow, int endRow, int column)
Вызывается при обновлении столбца в строках базовой модели в указанном диапазоне.

Обычно этот метод не вызывается напрямую. Он является открытым, чтобы классы представлений могли его вызывать.

Определено в:
rowsUpdated в классе RowSorter<M>
Параметры:
firstRow — первая строка в терминах базовой модели
endRow — последняя строка в терминах базовой модели
column — измененный столбец в терминах базовой модели
Исключения:
IndexOutOfBoundsException — если любой из аргументов находится за пределами диапазона базовой модели после изменения, firstRow > endRow или column находится за пределами диапазона базовой модели

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/DefaultRowSorter.html

Spec-Zone.ru

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