Spec-Zone.ru › OpenJDK 27

Класс RowSorter<M>

java.lang.Object
javax.swing.RowSorter<M>
Параметры типа:
M - тип базовой модели
Непосредственные известные подклассы:
DefaultRowSorter
public abstract class RowSorter<M> extends Object
RowSorter предоставляет основу для сортировки и фильтрации. Помимо создания и установки RowSorter, обычно нет необходимости взаимодействовать с ним напрямую. Конкретную реализацию RowSorter для JTable см. в описании TableRowSorter.

Основная роль 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
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, является ли другой объект «равным» этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Будит один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Будит все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие вызова notify или interrupt.
final void wait(long timeoutMillis)
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в состояние ожидания до пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

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

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, 2026, 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.

Spec-Zone.ru

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