Класс 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
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
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
Подробное описание конструкторов
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/DefaultRowSorter.html