Класс DefaultRowSorter<M, I>
- Type Parameters:
-
M- тип модели -
I- тип идентификатора, передаваемого вRowFilter
- Direct Known Subclasses:
TableRowSorter
public abstract class DefaultRowSorter<M,I> extends RowSorter<M>
RowSorter, обеспечивающая сортировку и фильтрацию данных в рамках модели данных, основанной на сетке. Помимо создания и установки RowSorter, вам крайне редко потребуется взаимодействовать с ней напрямую. Обратитесь к TableRowSorter для конкретной реализации RowSorter для JTable. Сортировка выполняется на основе текущих SortKey в порядке следования. Если два объекта равны (метод Comparator для столбца возвращает 0), используется следующий SortKey. Если SortKey больше не остаётся или порядок UNSORTED, используется порядок строк в модели.
Сортировка каждого столбца выполняется с помощью Comparator, которую вы можете указать с помощью метода setComparator. Если Comparator не указан, используется Comparator возвращаемый Collator.getInstance() в результате вызова toString для базовых объектов. 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.
- Since:
- 1.6
- See Also:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
protected static class |
DefaultRowSorter.ModelWrapper<M, |
DefaultRowSorter.ModelWrapper отвечает за предоставление данных, которые сортируются по DefaultRowSorter.
|
Вложенные классы/интерфейсы, объявленные в классе javax.swing.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<M, |
getModelWrapper() |
Возвращает обёртку модели, предоставляющую данные, которые сортируются и фильтруются.
|
RowFilter<? super M, |
getRowFilter() |
Возвращает фильтр, определяющий, какие строки, если таковые имеются, должны быть скрыты от представления.
|
List<? extends RowSorter.SortKey> |
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 |
Возвращает, преобразуется ли значение в строку перед выполнением сравнений при сортировке.
|
Методы, объявленные в классе javax.swing.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
public final M getModel()
- Определено в:
-
getModelв классеRowSorter<M> - Возвращает:
- базовая модель
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. Так как максимальное количество ключей сортировки установлено в 2 с помощью setMaxSortKeys, колонка 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 указывает, что все значения из модели должны быть включены. Метод RowFilter's include получает 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, 2021, 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/17/docs/api/java.desktop/javax/swing/DefaultRowSorter.html