Spec-Zone.ru › OpenJDK 24

Класс RowSorter<M>

java.lang.Object
javax.swing.RowSorter<M>
Type Parameters:
M - тип базовой модели
Direct Known Subclasses:
DefaultRowSorter
public abstract class RowSorter<M> extends Object
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.

Since:
1.6
See Also:
  • 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)
Инвертирует порядок сортировки указанного столбца.

Методы, объявленные в классе java.lang.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

© 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/RowSorter.html

Spec-Zone.ru

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