Spec-Zone.ru › OpenJDK 27

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

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

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, 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