Класс 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
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
protected static class |
DefaultRowSorter.ModelWrapper<M, |
DefaultRowSorter.ModelWrapper отвечает за предоставление данных, сортируемых с помощью DefaultRowSorter. |
Вложенные классы/интерфейсы, объявленные в классе RowSorter
RowSorter.SortKey | Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
RowSorter.SortKey |
SortKey описывает порядок сортировки для определенного столбца. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
DefaultRowSorter() |
Создает пустой DefaultRowSorter. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
allRowsChanged() |
Вызывается при полном изменении содержимого базовой модели. |
int |
convertRowIndexToModel |
Возвращает расположение index относительно базовой модели. |
int |
convertRowIndexToView |
Возвращает расположение index относительно представления. |
Comparator |
getComparator |
Возвращает Comparator для указанного столбца. |
int |
getMaxSortKeys() |
Возвращает максимальное количество ключей сортировки. |
final M |
getModel() |
Возвращает базовую модель. |
int |
getModelRowCount() |
Возвращает количество строк в базовой модели. |
protected final DefaultRowSorter.ModelWrapper |
getModelWrapper() |
Возвращает оболочку модели, предоставляющую сортируемые и фильтруемые данные. |
RowFilter |
getRowFilter() |
Возвращает фильтр, определяющий, какие строки следует скрыть из представления, если такие есть. |
List |
getSortKeys() |
Возвращает текущие ключи сортировки. |
boolean |
getSortsOnUpdates() |
Возвращает true, если при обновлении базовой модели должна выполняться сортировка; в противном случае возвращает false. |
int |
getViewRowCount() |
Возвращает количество строк в представлении. |
boolean |
isSortable |
Возвращает true, если указанный столбец доступен для сортировки; в противном случае — false. |
void |
modelStructureChanged() |
Вызывается при полном изменении структуры базовой модели. |
void |
rowsDeleted |
Вызывается при удалении строк из базовой модели в указанном диапазоне (включительно). |
void |
rowsInserted |
Вызывается при добавлении строк в базовую модель в указанном диапазоне (включительно). |
void |
rowsUpdated |
Вызывается при изменении строк базовой модели в указанном диапазоне (включительно). |
void |
rowsUpdated |
Вызывается при обновлении столбца в строках базовой модели в указанном диапазоне. |
void |
setComparator |
Задает Comparator, используемое при сортировке указанного столбца. |
void |
setMaxSortKeys |
Задает максимальное количество ключей сортировки. |
protected final void |
setModelWrapper |
Задает оболочку модели, предоставляющую сортируемые и фильтруемые данные. |
void |
setRowFilter |
Задает фильтр, определяющий, какие строки следует скрыть из представления, если такие есть. |
void |
setSortable |
Задает, доступен ли указанный столбец для сортировки. |
void |
setSortKeys |
Задает ключи сортировки. |
void |
setSortsOnUpdates |
Если значение равно true, указывает, что при обновлении базовой модели должна выполняться сортировка (вызывается rowsUpdated). |
void |
sort() |
Сортирует и фильтрует строки представления на основе ключей сортировки столбцов, которые в данный момент сортируются, и связанного с этим сортировщиком фильтра, если он задан. |
void |
toggleSortOrder |
Меняет порядок сортировки с возрастающего на убывающий (или с убывающего на возрастающий), если указанный столбец уже является основным сортируемым столбцом; в противном случае делает указанный столбец основным сортируемым столбцом и устанавливает возрастающий порядок сортировки. |
protected boolean |
useToString |
Возвращает, следует ли преобразовывать значение в строку перед сравнением при сортировке. |
Методы, объявленные в классе RowSorter
addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListener | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addRowSorterListener |
Добавляет RowSorterListener для получения уведомлений об этом RowSorter. |
protected void |
fireRowSorterChanged |
Уведомляет слушателя об изменении отображения. |
protected void |
fireSortOrderChanged() |
Уведомляет слушателя об изменении порядка сортировки. |
void |
removeRowSorterListener |
Удаляет RowSorterListener. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода 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
setSortable
public void setSortable(int column, boolean sortable)
toggleSortOrder. Столбец, помеченный как несортируемый, все еще можно сортировать, задав ключи сортировки напрямую. Значение по умолчанию — true.- Параметры:
-
column— столбец, для которого нужно включить или отключить сортировку, с точки зрения базовой модели -
sortable— можно ли сортировать указанный столбец - Исключения:
-
IndexOutOfBoundsException— еслиcolumnнаходится вне диапазона модели - См. также:
isSortable
public boolean isSortable(int column)
- Параметры:
-
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)
rowsUpdated). Например, если значение равно true и пользователь изменяет запись, ее положение в представлении может измениться. Значение по умолчанию — false.- Параметры:
-
sortsOnUpdates— выполнять ли сортировку при событиях обновления
getSortsOnUpdates
public boolean getSortsOnUpdates()
- Возвращает:
- нужно ли выполнять сортировку при обновлении модели
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— если столбец находится вне диапазона базовой модели - См. также:
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 означает, что представление не должно быть отсортировано, как и модель.- См. также:
useToString
protected boolean useToString(int column)
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> - Возвращает:
- количество строк в представлении
- См. также:
getModelRowCount
public int getModelRowCount()
- Определено в:
-
getModelRowCountв классеRowSorter<M> - Возвращает:
- количество строк в базовой модели
- См. также:
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находится вне диапазона базовой модели
© 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.