Класс RowSorter<M>
- Параметры типа:
M— тип базовой модели
- Прямые известные подклассы:
DefaultRowSorter
public abstract class RowSorter<M> extends Object
RowSorter служит основой для сортировки и фильтрации. Помимо создания и установки RowSorter, крайне редко возникает необходимость напрямую взаимодействовать с ним. См. TableRowSorter — конкретную реализацию RowSorter для JTable. Основная роль RowSorter — обеспечивать сопоставление двух систем координат: представления (например, JTable) и базового источника данных, которым обычно является модель.
Представление вызывает следующие методы RowSorter:
-
toggleSortOrder— представление вызывает этот метод, когда происходит соответствующее действие пользователя, инициирующее сортировку. Например, пользователь щелкнул заголовок столбца таблицы. - Один из методов изменения модели — представление вызывает метод изменения модели, когда базовая модель изменилась. Порядок доставки событий может иметь значение, поэтому
RowSorterне должен обновлять сопоставление, пока не будет вызван один из этих методов.
convertRowIndexToModel, convertRowIndexToView и getViewRowCount, они должны выполняться быстро. RowSorter уведомляет об изменениях с помощью RowSorterListener. Отправляются два типа уведомлений:
-
RowSorterEvent.Type.SORT_ORDER_CHANGED— уведомляет слушателей об изменении порядка сортировки. Обычно за этим следует уведомление об изменении сортировки. -
RowSorterEvent.Type.SORTED— уведомляет слушателей о том, что сопоставление, поддерживаемоеRowSorter, каким-либо образом изменилось.
RowSorter обычно не имеют взаимно-однозначного соответствия с базовой моделью, но такое соответствие возможно. Например, если сортировку выполняет база данных, toggleSortOrder может обращаться к базе данных (в фоновом потоке) и переопределять методы сопоставления, возвращая переданный аргумент. Конкретные реализации RowSorter должны ссылаться на такую модель, как TableModel или ListModel. Классы представлений, такие как JTable и JList, также будут ссылаться на модель. Чтобы избежать зависимости от порядка, реализации RowSorter не должны устанавливать слушателя на модель. Вместо этого класс представления будет обращаться к RowSorter при изменении модели. Например, если строка обновлена в TableModel, JTable вызывает rowsUpdated. При изменении модели представление может вызывать любой из следующих методов: modelStructureChanged, allRowsChanged, rowsInserted, rowsDeleted и rowsUpdated.
- Появился в версии:
- 1.6
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
RowSorter.SortKey |
SortKey описывает порядок сортировки для конкретного столбца. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RowSorter() |
Создает RowSorter. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addRowSorterListener |
Добавляет RowSorterListener для получения уведомлений об этом RowSorter. |
abstract void |
allRowsChanged() |
Вызывается, когда содержимое базовой модели полностью изменилось. |
abstract int |
convertRowIndexToModel |
Возвращает расположение index относительно базовой модели. |
abstract int |
convertRowIndexToView |
Возвращает расположение index относительно представления. |
protected void |
fireRowSorterChanged |
Уведомляет слушателя об изменении сопоставления. |
protected void |
fireSortOrderChanged() |
Уведомляет слушателя об изменении порядка сортировки. |
abstract M |
getModel() |
Возвращает базовую модель. |
abstract int |
getModelRowCount() |
Возвращает количество строк в базовой модели. |
abstract List |
getSortKeys() |
Возвращает текущие ключи сортировки. |
abstract int |
getViewRowCount() |
Возвращает количество строк в представлении. |
abstract void |
modelStructureChanged() |
Вызывается, когда структура базовой модели полностью изменилась. |
void |
removeRowSorterListener |
Удаляет RowSorterListener. |
abstract void |
rowsDeleted |
Вызывается, когда из базовой модели удалены строки в указанном диапазоне (включительно). |
abstract void |
rowsInserted |
Вызывается, когда в базовую модель вставлены строки в указанном диапазоне (включительно). |
abstract void |
rowsUpdated |
Вызывается, когда строки в базовой модели изменились в указанном диапазоне (включительно). |
abstract void |
rowsUpdated |
Вызывается, когда столбец в строках был обновлен в базовой модели в указанном диапазоне. |
abstract void |
setSortKeys |
Задает текущие ключи сортировки. |
abstract void |
toggleSortOrder |
Изменяет порядок сортировки указанного столбца на обратный. |
Подробное описание конструкторов
RowSorter
public RowSorter()
RowSorter.Подробное описание методов
getModel
public abstract M getModel()
- Возвращает:
- базовая модель
toggleSortOrder
public abstract void toggleSortOrder(int column)
Если в результате изменится порядок сортировки и будет выполнена сортировка, будет отправлено соответствующее уведомление RowSorterListener.
- Параметры:
-
column— столбец, для которого нужно изменить порядок сортировки на обратный, относительно базовой модели - Исключения:
-
IndexOutOfBoundsException— если столбец находится за пределами диапазона базовой модели
convertRowIndexToModel
public abstract int convertRowIndexToModel(int index)
index относительно базовой модели. То есть для строки index в координатах представления возвращается индекс строки относительно базовой модели.- Параметры:
-
index— индекс строки относительно базового представления - Возвращает:
- индекс строки относительно представления
- Исключения:
-
IndexOutOfBoundsException— еслиindexнаходится за пределами диапазона представления
convertRowIndexToView
public abstract int convertRowIndexToView(int index)
index относительно представления. То есть для строки index в координатах базовой модели возвращается индекс строки относительно представления.- Параметры:
-
index— индекс строки относительно базовой модели - Возвращает:
- индекс строки относительно представления или -1, если индекс отфильтрован и исключен из представления
- Исключения:
-
IndexOutOfBoundsException— еслиindexнаходится за пределами диапазона модели
setSortKeys
public abstract void setSortKeys(List<? extends RowSorter.SortKey> keys)
- Параметры:
-
keys— новыеSortKeys;null— сокращенная запись для указания пустого списка, означающего, что представление не должно быть отсортировано
getSortKeys
public abstract List<? extends RowSorter.SortKey> getSortKeys()
non-null List и может возвращать неизменяемый List. Если необходимо изменить ключи сортировки, создайте копию возвращенного List, измените копию и вызовите setSortKeys с новым списком.- Возвращает:
- текущий порядок сортировки
getViewRowCount
public abstract int getViewRowCount()
- Возвращает:
- количество строк в представлении
- См. также:
getModelRowCount
public abstract int getModelRowCount()
- Возвращает:
- количество строк в базовой модели
- См. также:
modelStructureChanged
public abstract void modelStructureChanged()
TableModel. Обычно этот метод не вызывают. Он является общедоступным, чтобы его могли вызывать классы представлений.
allRowsChanged
public abstract void allRowsChanged()
Обычно этот метод не вызывают. Он является общедоступным, чтобы его могли вызывать классы представлений.
rowsInserted
public abstract void rowsInserted(int firstRow, int endRow)
Аргументы задают индексы измененного диапазона. Первый аргумент задается относительно модели до изменения и должен быть меньше либо равен размеру модели до изменения. Второй аргумент задается относительно модели после изменения и должен быть меньше размера модели после изменения. Например, если в модели из 5 строк добавить в конец модели 3 элемента, индексы будут равны 5 и 7.
Обычно этот метод не вызывают. Он является общедоступным, чтобы его могли вызывать классы представлений.
- Параметры:
-
firstRow— первая строка -
endRow— последняя строка - Исключения:
-
IndexOutOfBoundsException— если один из аргументов недопустим илиfirstRow>endRow
rowsDeleted
public abstract void rowsDeleted(int firstRow, int endRow)
Аргументы задают индексы измененного диапазона относительно модели до изменения. Например, если из модели из 5 строк удалить 3 элемента в конце, индексы будут равны 2 и 4.
Обычно этот метод не вызывают. Он является общедоступным, чтобы его могли вызывать классы представлений.
- Параметры:
-
firstRow— первая строка -
endRow— последняя строка - Исключения:
-
IndexOutOfBoundsException— если один из аргументов находится за пределами диапазона модели до изменения илиfirstRow>endRow
rowsUpdated
public abstract void rowsUpdated(int firstRow, int endRow)
Обычно этот метод не вызывают. Он является общедоступным, чтобы его могли вызывать классы представлений.
- Параметры:
-
firstRow— первая строка относительно базовой модели -
endRow— последняя строка относительно базовой модели - Исключения:
-
IndexOutOfBoundsException— если один из аргументов находится за пределами диапазона базовой модели илиfirstRow>endRow
rowsUpdated
public abstract void rowsUpdated(int firstRow, int endRow, int column)
Обычно этот метод не вызывают. Он является общедоступным, чтобы его могли вызывать классы представлений.
- Параметры:
-
firstRow— первая строка относительно базовой модели -
endRow— последняя строка относительно базовой модели -
column— изменившийся столбец относительно базовой модели - Исключения:
-
IndexOutOfBoundsException— если один из аргументов находится за пределами диапазона базовой модели после изменения,firstRow>endRowилиcolumnнаходится за пределами диапазона базовой модели
addRowSorterListener
public void addRowSorterListener(RowSorterListener l)
RowSorterListener для получения уведомлений об этом RowSorter. Если один и тот же слушатель добавлен несколько раз, он будет получать несколько уведомлений. Если l равен null, никаких действий не выполняется.- Параметры:
-
l—RowSorterListener
removeRowSorterListener
public void removeRowSorterListener(RowSorterListener l)
RowSorterListener. Если l равен null, никаких действий не выполняется.- Параметры:
-
l—RowSorterListener
fireSortOrderChanged
protected void fireSortOrderChanged()
fireRowSorterChanged
protected void fireRowSorterChanged(int[] lastRowIndexToModel)
- Параметры:
-
lastRowIndexToModel— сопоставление индексов модели с индексами представления до сортировки; может бытьnull
© 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/RowSorter.html