Spec-Zone.ru › OpenJDK 24

Класс 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>
DefaultRowSorter.ModelWrapper отвечает за предоставление данных, которые сортируются по DefaultRowSorter.

Вложенные классы/интерфейсы, объявленные в классе javax.swing.RowSorter

RowSorter.SortKey

Краткое описание конструкторов

Конструктор Описание
DefaultRowSorter()
Создаёт пустой DefaultRowSorter.

Краткое описание методов

Модификатор и тип Метод Описание
void allRowsChanged()
Вызывается, когда содержимое базовой модели полностью изменилось.
int convertRowIndexToModel(int index)
Возвращает расположение index относительно базовой модели.
int convertRowIndexToView(int index)
Возвращает расположение index относительно представления.
Comparator<?> getComparator(int column)
Возвращает Comparator для указанного столбца.
int getMaxSortKeys()
Возвращает максимальное количество ключей сортировки.
final M getModel()
Возвращает базовая модель.
int getModelRowCount()
Возвращает количество строк в базовой модели.
protected final DefaultRowSorter.ModelWrapper<M,I> getModelWrapper()
Возвращает обёртку модели, предоставляющую данные, которые сортируются и фильтруются.
RowFilter<? super M, ? super I> getRowFilter()
Возвращает фильтр, определяющий, какие строки, если таковые имеются, должны быть скрыты от просмотра.
List<? extends RowSorter.SortKey> getSortKeys()
Возвращает текущие ключи сортировки.
boolean getSortsOnUpdates()
Возвращает true, если сортировка должна происходить при обновлении базовой модели; в противном случае возвращает false.
int getViewRowCount()
Возвращает количество строк в представлении.
boolean isSortable(int column)
Возвращает true, если указанный столбец сортируемый; в противном случае false.
void modelStructureChanged()
Вызывается, когда структура базовой модели полностью изменилась.
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)
Устанавливает Comparator для использования при сортировке указанного столбца.
void setMaxSortKeys(int max)
Устанавливает максимальное количество ключей сортировки.
protected final 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, указывает, что сортировка должна происходить при обновлении базовой модели (вызывается rowsUpdated).
void sort()
Сортирует и фильтрует строки в представлении на основе ключей сортировки столбцов, которые в настоящее время сортируются, и фильтра, если таковой имеется, связанного с этим сортировщиком.
void toggleSortOrder(int column)
Инвертирует порядок сортировки с возрастающего на убывающий (или с убывающего на возрастающий), если указанный столбец уже является основным сортируемым столбцом; в противном случае делает указанный столбец основным сортируемым столбцом с возрастающим порядком сортировки.
protected boolean useToString(int column)
Возвращает, следует ли преобразовывать значение в строку перед выполнением сравнений при сортировке.

Методы, объявленные в классе javax.swing.RowSorter

addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, 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()
Возвращает базовую модель.
Определено в:
getModel в классе RowSorter<M>
Возвращаемое значение:
базовая модель

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 указывает, что все значения из модели должны быть включены.

Метод 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 - если столбец находится вне диапазона базовой модели
См. также:
  • 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 находится вне диапазона представления

сортировка

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 - если столбец находится за пределами диапазона базовой модели

getViewRowCount

public int getViewRowCount()
Возвращает количество строк в представлении. Если содержимое было отфильтровано, это может отличаться от количества строк в базовой модели.
Определено в:
getViewRowCount в классе RowSorter<M>
Возвращает:
количество строк в представлении
См. также:
  • RowSorter.getModelRowCount()

getModelRowCount

public int getModelRowCount()
Возвращает количество строк в базовой модели.
Определено в:
getModelRowCount в классе RowSorter<M>
Возвращает:
количество строк в базовой модели
См. также:
  • RowSorter.getViewRowCount()

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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/DefaultRowSorter.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API