Класс 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() | Создаёт |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | addRowSorterListener(RowSorterListener l) | Добавляет |
abstract void | allRowsChanged() | Вызывается, когда содержимое базовой модели полностью изменилось. |
abstract int | convertRowIndexToModel(int index) | Возвращает расположение |
abstract int | convertRowIndexToView(int 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) | Удаляет |
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, 2020, 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/11/docs/api/java.desktop/javax/swing/RowSorter.html