Класс 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, см. конкретную реализацию (например, 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 |
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 |
Возвращает, нужно ли преобразовывать значение в строку перед выполнением сравнений при сортировке. |
Методы, объявленные в классе 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 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.- Parameters:
-
column- индекс столбца для проверки, с точки зрения базовой модели - Returns:
- true, если значения должны быть преобразованы в строки перед сравнением при сортировке
- Throws:
-
IndexOutOfBoundsException- еслиcolumnнедействителен
setComparator
public void setComparator(int column, Comparator<?> comparator)
Comparator для использования при сортировке указанного столбца. Это не вызывает сортировку. Если вы хотите отсортировать данные после установки компаратора, вам нужно явно вызвать sort.- Parameters:
-
column- индекс столбца, для которого будет использоватьсяComparator, с точки зрения базовой модели -
comparator- используемыйComparator - Throws:
-
IndexOutOfBoundsException- еслиcolumnвыходит за пределы диапазона базовой модели
getComparator
public Comparator<?> getComparator(int column)
Comparator для указанного столбца. Возвращает null если для столбца не был задан Comparator.- Parameters:
-
column- столбец, для которого нужно получитьComparator, с точки зрения базовой модели - Returns:
Comparatorдля указанного столбца- Throws:
-
IndexOutOfBoundsException- если столбец выходит за пределы диапазона базовой модели
getViewRowCount
public int getViewRowCount()
- Specified by:
-
getViewRowCountв классеRowSorter<M> - Returns:
- количество строк в представлении
- See Also:
getModelRowCount
public int getModelRowCount()
- Specified by:
-
getModelRowCountв классеRowSorter<M> - Returns:
- количество строк в базовой модели
- See Also:
modelStructureChanged
public void modelStructureChanged()
TableModel изменилось, этот метод будет вызван. Обычно вы этот метод не вызываете. Этот метод является публичным для использования классами представления.
- Specified by:
-
modelStructureChangedв классеRowSorter<M>
allRowsChanged
public void allRowsChanged()
Обычно вы этот метод не вызываете. Этот метод является публичным для использования классами представления.
- Specified by:
-
allRowsChangedв классеRowSorter<M>
rowsInserted
public void rowsInserted(int firstRow, int endRow)
Аргументы указывают индексы затронутого диапазона. Первый аргумент - относительно модели до изменения, и он должен быть меньше или равен размеру модели до изменения. Второй аргумент - относительно модели после изменения и должен быть меньше размера модели после изменения. Например, если у вас есть модель из 5 строк и вы добавляете 3 элемента в конец модели, индексы будут 5, 7.
Обычно вы этот метод не вызываете. Этот метод является публичным для использования классами представления.
- Specified by:
-
rowsInsertedв классеRowSorter<M> - Parameters:
-
firstRow- первая строка -
endRow- последняя строка - Throws:
-
IndexOutOfBoundsException- если любой из аргументов недействителен, илиfirstRow>endRow
rowsDeleted
public void rowsDeleted(int firstRow, int endRow)
Аргументы указывают индексы затронутого диапазона и относятся к модели до изменения. Например, если у вас есть модель из 5 строк и вы удаляете 3 элемента из конца модели, индексы будут 2, 4.
Обычно вы этот метод не вызываете. Этот метод является публичным для использования классами представления.
- Specified by:
-
rowsDeletedв классеRowSorter<M> - Parameters:
-
firstRow- первая строка -
endRow- последняя строка - Throws:
-
IndexOutOfBoundsException- если любой из аргументов выходит за пределы диапазона модели до изменения, илиfirstRow>endRow
rowsUpdated
public void rowsUpdated(int firstRow, int endRow)
Обычно вы этот метод не вызываете. Этот метод является публичным для использования классами представления.
- Specified by:
-
rowsUpdatedв классеRowSorter<M> - Parameters:
-
firstRow- первая строка, с точки зрения базовой модели -
endRow- последняя строка, с точки зрения базовой модели - Throws:
-
IndexOutOfBoundsException- если любой из аргументов выходит за пределы диапазона базовой модели, илиfirstRow>endRow
rowsUpdated
public void rowsUpdated(int firstRow, int endRow, int column)
Обычно вы этот метод не вызываете. Этот метод является публичным для использования классами представления.
- Specified by:
-
rowsUpdatedв классеRowSorter<M> - Parameters:
-
firstRow- первая строка, с точки зрения базовой модели -
endRow- последняя строка, с точки зрения базовой модели -
column- столбец, который изменился, с точки зрения базовой модели - Throws:
-
IndexOutOfBoundsException- если любой из аргументов выходит за пределы диапазона базовой модели после изменения,firstRow>endRow, илиcolumnвыходит за пределы диапазона базовой модели
© 1993, 2023, 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/21/docs/api/java.desktop/javax/swing/DefaultRowSorter.html