Класс DefaultRowSorter<M,I>
- java.lang.Object
-
- javax.swing.RowSorter<M>
-
- javax.swing.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:
-
TableRowSorter,DefaultTableModel,Collator
Вложенные классы
| Модификатор и тип | Класс | Описание |
|---|---|---|
protected static class | DefaultRowSorter.ModelWrapper<M,I> |
|
Вложенные классы/интерфейсы, объявленные в классе javax.swing.RowSorter
RowSorter.SortKey Конструкторы
| Конструктор | Описание |
|---|---|
DefaultRowSorter() | Создаёт пустой |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
int | convertRowIndexToModel(int index) | Возвращает расположение |
int | convertRowIndexToView(int index) | Возвращает расположение |
Comparator<?> | getComparator(int column) | Возвращает |
int | getMaxSortKeys() | Возвращает максимальное число ключей сортировки. |
M | getModel() | Возвращает базовую модель. |
protected DefaultRowSorter.ModelWrapper<M,I> | getModelWrapper() | Возвращает обертку модели, предоставляющую данные, которые сортируются и фильтруются. |
RowFilter<? super M,? super I> | getRowFilter() | Возвращает фильтр, определяющий, какие строки, если таковые имеются, должны быть скрыты от просмотра. |
List<? extends RowSorter.SortKey> | getSortKeys() | Возвращает текущие ключи сортировки. |
boolean | getSortsOnUpdates() | Возвращает true, если сортировка должна происходить при обновлении базовой модели; в противном случае возвращает false. |
boolean | isSortable(int column) | Возвращает true, если указанный столбец может быть отсортирован; в противном случае false. |
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) | Устанавливает |
void | setMaxSortKeys(int max) | Устанавливает максимальное число ключей сортировки. |
protected 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, указывает, что сортировка должна происходить при обновлении базовой модели (вызывается |
void | sort() | Сортирует и фильтрует строки в представлении на основе ключей сортировки столбцов, которые в данный момент сортируются, и фильтра, если таковой имеется, связанного с этим сортировщиком. |
void | toggleSortOrder(int column) | Инвертирует порядок сортировки с возрастающего на убывающий (или с убывающего на возрастающий), если указанный столбец уже является основным столбцом сортировки; в противном случае делает указанный столбец основным столбцом сортировки с возрастающим порядком сортировки. |
protected boolean | useToString(int column) | Возвращает, следует ли преобразовывать значение в строку перед выполнением сравнения при сортировке. |
Методы, унаследованные от класса javax.swing.RowSorter
addRowSorterListener, allRowsChanged, fireRowSorterChanged, fireSortOrderChanged, getModelRowCount, getViewRowCount, modelStructureChanged, removeRowSorterListener Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
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()
Возвращает базовую модель.
setSortable
public void setSortable(int column,
boolean sortable) Устанавливает, является ли указанный столбец сортируемым. Указанное значение проверяется только при вызове toggleSortOrder. По-прежнему возможно сортировать по столбцу, помеченному как несортируемый, непосредственно установив ключи сортировки. По умолчанию значение true.
- Параметры:
-
column- столбец для включения или отключения сортировки, с точки зрения базовой модели -
sortable- является ли указанный столбец сортируемым - Исключения:
-
IndexOutOfBoundsException- еслиcolumnнаходится за пределами диапазона модели - См. также:
-
toggleSortOrder(int),setSortKeys(java.util.List<? extends javax.swing.RowSorter.SortKey>)
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. Так как максимальное количество ключей сортировки было установлено в 2 с помощью setMaxSortKeys, столбец 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 означает, что все значения из модели должны быть включены.
Метод 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- если столбец находится за пределами диапазона базовой модели - См. также:
-
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(javax.swing.RowFilter<? super M, ? super I>),setSortKeys(java.util.List<? extends javax.swing.RowSorter.SortKey>)
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— если столбец выходит за пределы базовой модели
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, 2020, 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/11/docs/api/java.desktop/javax/swing/DefaultRowSorter.html