Spec-Zone.ru › OpenJDK 25

Класс RowSorter<M>

java.lang.Object
javax.swing.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
См. также:
  • TableRowSorter

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static class  RowSorter.SortKey
SortKey описывает порядок сортировки для конкретного столбца.

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

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

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

Модификатор и тип Метод Описание
void addRowSorterListener(RowSorterListener l)
Добавляет RowSorterListener для получения уведомлений об этом RowSorter.
abstract void allRowsChanged()
Вызывается, когда содержимое базовой модели полностью изменилось.
abstract int convertRowIndexToModel(int index)
Возвращает расположение index относительно базовой модели.
abstract int convertRowIndexToView(int index)
Возвращает расположение index относительно представления.
protected void fireRowSorterChanged(int[] lastRowIndexToModel)
Уведомляет слушателя об изменении сопоставления.
protected void fireSortOrderChanged()
Уведомляет слушателя об изменении порядка сортировки.
abstract M getModel()
Возвращает базовую модель.
abstract int getModelRowCount()
Возвращает количество строк в базовой модели.
abstract List<? extends RowSorter.SortKey> getSortKeys()
Возвращает текущие ключи сортировки.
abstract int getViewRowCount()
Возвращает количество строк в представлении.
abstract void modelStructureChanged()
Вызывается, когда структура базовой модели полностью изменилась.
void removeRowSorterListener(RowSorterListener l)
Удаляет RowSorterListener.
abstract void rowsDeleted(int firstRow, int endRow)
Вызывается, когда из базовой модели удалены строки в указанном диапазоне (включительно).
abstract void rowsInserted(int firstRow, int endRow)
Вызывается, когда в базовую модель вставлены строки в указанном диапазоне (включительно).
abstract void rowsUpdated(int firstRow, int endRow)
Вызывается, когда строки в базовой модели изменились в указанном диапазоне (включительно).
abstract void rowsUpdated(int firstRow, int endRow, int column)
Вызывается, когда столбец в строках был обновлен в базовой модели в указанном диапазоне.
abstract void setSortKeys(List<? extends RowSorter.SortKey> keys)
Задает текущие ключи сортировки.
abstract void toggleSortOrder(int column)
Изменяет порядок сортировки указанного столбца на обратный.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

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()

getModelRowCount

public abstract int getModelRowCount()
Возвращает количество строк в базовой модели.
Возвращает:
количество строк в базовой модели
См. также:
  • getViewRowCount()

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе документации Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

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