Spec-Zone.ru › OpenJDK 8

Класс DefaultRowSorter<M,I>

  • java.lang.Object
    • javax.swing.RowSorter<M>
      • javax.swing.DefaultRowSorter<M,I>
Type Parameters:
M - тип модели
I - тип идентификатора, передаваемого в RowFilter
Direct Known Subclasses:
TableRowSorter

public abstract class DefaultRowSorter<M,I>
extends RowSorter<M>

Реализация RowSorter, обеспечивающая сортировку и фильтрацию данных в модели на основе сетки. Помимо создания и установки RowSorter, вам вряд ли придётся взаимодействовать с ней напрямую. Обратитесь к TableRowSorter для конкретной реализации RowSorter для JTable.

Сортировка выполняется на основе текущих SortKey, в порядке их следования. Если два объекта равны (метод Comparator для столбца возвращает 0), используется следующий SortKey. Если SortKey больше не остаётся или порядок является UNSORTED, то используется порядок строк в модели.

Сортировка каждого столбца выполняется с помощью Comparator, который можно указать с помощью метода setComparator. Если Comparator не указан, используется Comparator возвращаемое Collator.getInstance() в результате вызова toString над базовыми объектами. Comparator никогда не передаётся null. Значение типа null считается предшествующим значению, не являющемуся null, а два значения типа null считаются равными.

Если вы укажете Comparator который преобразует свой аргумент в тип, отличный от типа, предоставляемого моделью, при сортировке данных будет выброшено исключение ClassCastException.

Помимо сортировки, DefaultRowSorter предоставляет возможность фильтрации строк. Фильтрация выполняется с помощью RowFilter , который указывается с помощью метода setRowFilter. Если фильтр не указан, включаются все строки.

По умолчанию строки находятся в неупорядоченном порядке (таком же, как в модели), а каждый столбец допускает сортировку. Стандартные Comparator описаны в подклассах (например, TableRowSorter).

Если структура базовой модели изменяется (вызывается метод modelStructureChanged), следующие параметры сбрасываются до значений по умолчанию: Comparator по столбцам, текущий порядок сортировки и возможность сортировки каждого столбца. Чтобы найти значения Comparator по умолчанию, см. конкретную реализацию (например, TableRowSorter). Порядок сортировки по умолчанию — неупорядоченный (такой же, как в модели), и столбцы по умолчанию сортируются.

Если структура базовой модели изменяется (вызывается метод modelStructureChanged), следующие параметры сбрасываются до значений по умолчанию: Comparator по столбцам, текущий порядок сортировки и возможность сортировки столбца.

DefaultRowSorter — абстрактный класс. Конкретные подклассы должны предоставить доступ к базовым данным, вызвав setModelWrapper. Метод setModelWrapper обязательно следует вызвать сразу после вызова конструктора, желательно в конструкторе подкласса. Неопределённое поведение возникнет, если вы используете DefaultRowSorter без указания ModelWrapper.

DefaultRowSorter имеет два формальных параметра типа. Первый параметр типа соответствует классу модели, например DefaultTableModel. Второй параметр типа соответствует классу идентификатора, передаваемого в RowFilter. Дополнительные сведения о параметрах типа см. в TableRowSorter и RowFilter.

Since:
1.6
See Also:
TableRowSorter, DefaultTableModel, Collator

Вложенные классы

Модификатор и тип Класс и описание
protected static class  DefaultRowSorter.ModelWrapper<M,I>

DefaultRowSorter.ModelWrapper отвечает за предоставление данных, которые сортируются DefaultRowSorter.

Вложенные классы/интерфейсы унаследованные от класса javax.swing.RowSorter

RowSorter.SortKey

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

Конструктор и описание
DefaultRowSorter()

Создаёт пустой DefaultRowSorter.

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

Модификатор и тип Метод и описание
void allRowsChanged()

Вызывается, когда содержимое базовой модели полностью изменилось.

int convertRowIndexToModel(int index)

Возвращает расположение index с точки зрения базовой модели.

int convertRowIndexToView(int index)

Возвращает расположение index с точки зрения представления.

Comparator<?> getComparator(int column)

Возвращает Comparator для указанного столбца.

int getMaxSortKeys()

Возвращает максимальное число ключей сортировки.

M getModel()

Возвращает базовую модель.

int getModelRowCount()

Возвращает количество строк в базовой модели.

protected DefaultRowSorter.ModelWrapper<M,I> getModelWrapper()

Возвращает оболочку модели, предоставляющую данные, которые сортируются и фильтруются.

RowFilter<? super M,? super I> getRowFilter()

Возвращает фильтр, определяющий, какие строки, если таковые имеются, должны быть скрыты от просмотра.

List<? extends RowSorter.SortKey> getSortKeys()

Возвращает текущие ключи сортировки.

boolean getSortsOnUpdates()

Возвращает true, если сортировка должна произойти при обновлении базовой модели; в противном случае возвращает false.

int getViewRowCount()

Возвращает количество строк в представлении.

boolean isSortable(int column)

Возвращает true, если указанный столбец сортируется; в противном случае — false.

void modelStructureChanged()

Вызывается, когда структура базовой модели полностью изменилась.

void rowsDeleted(int firstRow, int endRow)

Вызывается, когда строки были удалены из базовой модели в указанном диапазоне (включительно).

void rowsInserted(int firstRow, int endRow)

Вызывается, когда строки были вставлены в базовую модель в указанном диапазоне (включительно).

void rowsUpdated(int firstRow, int endRow)

Вызывается, когда строки были изменены в базовой модели в указанном диапазоне (включительно).

void rowsUpdated(int firstRow, int endRow, int column)

Вызывается, когда столбцы строк были обновлены в базовой модели в указанном диапазоне.

void setComparator(int column, Comparator<?> comparator)

Устанавливает Comparator для сортировки указанного столбца.

void setMaxSortKeys(int max)

Устанавливает максимальное количество ключей сортировки.

protected void setModelWrapper(DefaultRowSorter.ModelWrapper<M,I> modelWrapper)

Устанавливает оболочку модели, предоставляющую данные, которые сортируются и фильтруются.

void setRowFilter(RowFilter<? super M,? super I> filter)

Устанавливает фильтр, определяющий, какие строки, если таковые имеются, должны быть скрыты от просмотра.

void setSortable(int column, boolean sortable)

Устанавливает, разрешена ли сортировка по указанному столбцу.

void setSortKeys(List<? extends RowSorter.SortKey> sortKeys)

Устанавливает ключи сортировки.

void setSortsOnUpdates(boolean sortsOnUpdates)

Если true, указывает, что сортировка должна произойти при обновлении базовой модели (вызывается rowsUpdated).

void sort()

Сортирует и фильтрует строки в представлении на основе ключей сортировки столбцов, которые в настоящее время сортируются, и фильтра, если таковой имеется, связанного с этим сортировщиком.

void toggleSortOrder(int column)

Инвертирует порядок сортировки с возрастающего на убывающий (или с убывающего на возрастающий), если указанный столбец уже является основным сортируемым столбцом; в противном случае делает указанный столбец основным сортируемым столбцом с возрастающим порядком сортировки.

protected boolean useToString(int column)

Возвращает, необходимо ли преобразовывать значение в строку перед сравнением при сортировке.

Методы унаследованные от класса javax.swing.RowSorter

addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListener

Методы унаследованные от класса java.lang.Object

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

Конструкторы

DefaultRowSorter

public DefaultRowSorter()

Создаёт пустой DefaultRowSorter.

Методы

setModelWrapper

protected final void setModelWrapper(DefaultRowSorter.ModelWrapper<M,I> modelWrapper)

Устанавливает оболочку модели, предоставляющую данные, которые сортируются и фильтруются.

Параметры:
modelWrapper - оболочка модели, ответственная за предоставление данных, которые сортируются и фильтруются
Исключения:
IllegalArgumentException - если modelWrapper является null

getModelWrapper

protected final DefaultRowSorter.ModelWrapper<M,I> getModelWrapper()

Возвращает оболочку модели, предоставляющую данные, которые сортируются и фильтруются.

Возвращает:
оболочка модели, ответственная за предоставление данных, которые сортируются и фильтруются

getModel

public final M getModel()

Возвращает базовую модель.

Задано в:
getModel в классе RowSorter<M>
Возвращает:
базовую модель

setSortable

public void setSortable(int column,
                        boolean sortable)

Устанавливает, сортируема ли указанная колонка. Указанное значение проверяется только при вызове toggleSortOrder. Всё ещё возможно сортировать по колонке, помеченной как несортируемая, напрямую установив ключи сортировки. Значение по умолчанию - true.

Параметры:
column - колонка для включения или отключения сортировки, в терминах базовой модели
sortable - сортируема ли указанная колонка
Исключения:
IndexOutOfBoundsException - если column находится за пределами диапазона модели
См. также:
toggleSortOrder(int), setSortKeys(java.util.List<? extends javax.swing.RowSorter.SortKey>)

isSortable

public boolean isSortable(int column)

Возвращает true, если указанная колонка сортируема; иначе, false.

Параметры:
column - колонка для проверки сортировки, в терминах базовой модели
Возвращает:
true, если колонка сортируема
Исключения:
IndexOutOfBoundsException - если колонка находится за пределами диапазона базовой модели

setSortKeys

public void setSortKeys(List<? extends RowSorter.SortKey> sortKeys)

Устанавливает ключи сортировки. Создаётся копия переданного List; последующие изменения переданного List не влияют на этот DefaultRowSorter. Если ключи сортировки изменились, это запускает сортировку.

Задано в:
setSortKeys в классе RowSorter<M>
Параметры:
sortKeys - новые SortKeys; null является сокращением для указания пустого списка, указывающего, что представление должно быть несортированным
Исключения:
IllegalArgumentException - если какое-либо из значений в sortKeys является null или имеет индекс колонки, выходящий за пределы диапазона модели

getSortKeys

public List<? extends RowSorter.SortKey> getSortKeys()

Возвращает текущие ключи сортировки. Возвращает неизменяемый non-null List. Если вам нужно изменить ключи сортировки, сделайте копию возвращённого List, измените копию и вызовите setSortKeys с новым списком.

Задано в:
getSortKeys в классе RowSorter<M>
Возвращает:
текущий порядок сортировки

setMaxSortKeys

public void setMaxSortKeys(int max)

Устанавливает максимальное количество ключей сортировки. Количество ключей сортировки определяет, как решаются равные значения при сортировке. Например, предположим, что создан сортировщик строк таблицы и вызван setMaxSortKeys(2). Пользователь нажимает заголовок колонки 1, что приводит к сортировке строк таблицы на основе элементов в колонке 1. Затем пользователь нажимает заголовок колонки 2, что приводит к сортировке таблицы на основе элементов в колонке 2; если какие-либо элементы в колонке 2 равны, то эти строки упорядочиваются на основе элементов в колонке 1. В этом случае мы говорим, что строки в первую очередь сортируются по колонке 2, а во вторую по колонке 1. Если пользователь затем нажимает заголовок колонки 3, то элементы сортируются в первую очередь по колонке 3, а во вторую по колонке 2. Поскольку максимальное количество ключей сортировки установлено в 2 с помощью setMaxSortKeys, колонка 1 больше не влияет на порядок.

Максимальное количество ключей сортировки применяется toggleSortOrder. Вы можете указать больше ключей сортировки, вызвав setSortKeys напрямую, и они все будут учтены. Однако, если toggleSortOrder будет вызвано позже, максимальное количество ключей сортировки будет применено. Значение по умолчанию равно 3.

Параметры:
max - максимальное количество ключей сортировки
Исключения:
IllegalArgumentException - если max < 1

getMaxSortKeys

public int getMaxSortKeys()

Возвращает максимальное количество ключей сортировки.

Возвращает:
максимальное количество ключей сортировки

setSortsOnUpdates

public void setSortsOnUpdates(boolean sortsOnUpdates)

Если true, указывает, что сортировка должна выполняться при обновлении базовой модели (вызов rowsUpdated). Например, если это true, и пользователь редактирует запись, её положение в представлении может измениться. Значение по умолчанию - false.

Параметры:
sortsOnUpdates - сортировать ли при событиях обновления

getSortsOnUpdates

public boolean getSortsOnUpdates()

Возвращает true, если сортировка должна выполняться при обновлении базовой модели; в противном случае возвращает false.

Возвращает:
должна ли сортировка происходить при обновлении модели

setRowFilter

public void setRowFilter(RowFilter<? super M,? super I> filter)

Устанавливает фильтр, определяющий, какие строки, если таковые имеются, должны быть скрыты от представления. Фильтр применяется до сортировки. Значение null указывает, что все значения из модели должны быть включены.

Метод RowFilter include получает Entry, который оборачивает базовую модель. Количество столбцов в Entry соответствует количеству столбцов в ModelWrapper. Идентификатор также берётся из ModelWrapper.

Этот метод запускает сортировку.

Параметры:
filter - фильтр, используемый для определения, какие записи должны быть включены

getRowFilter

public RowFilter<? super M,? super I> getRowFilter()

Возвращает фильтр, определяющий, какие строки, если таковые имеются, должны быть скрыты от представления.

Возвращает:
фильтр

toggleSortOrder

public void toggleSortOrder(int column)

Инвертирует порядок сортировки с возрастающего на убывающий (или с убывающего на возрастающий), если указанная колонка уже является основной колонкой сортировки; в противном случае делает указанную колонку основной колонкой сортировки с возрастающим порядком сортировки. Если указанная колонка не сортируема, этот метод не оказывает никакого влияния.

Задано в:
toggleSortOrder в классе RowSorter<M>
Параметры:
column - индекс колонки, которую нужно сделать основной колонкой сортировки, в терминах базовой модели
Исключения:
IndexOutOfBoundsException - если колонка находится за пределами диапазона базовой модели
См. также:
setSortable(int,boolean), setMaxSortKeys(int)

convertRowIndexToView

public int convertRowIndexToView(int index)

Возвращает местоположение index в терминах представления. То есть, для строки index в координатах базовой модели, это возвращает индекс строки в терминах представления.

Задано в:
convertRowIndexToView в классе RowSorter<M>
Параметры:
index - индекс строки в терминах базовой модели
Возвращает:
индекс строки в терминах представления или -1, если строка была отфильтрована из представления
Исключения:
IndexOutOfBoundsException - если index находится за пределами диапазона модели

convertRowIndexToModel

public int convertRowIndexToModel(int index)

Возвращает местоположение index в терминах базовой модели. То есть, для строки index в координатах представления это возвращает индекс строки в терминах базовой модели.

Задано в:
convertRowIndexToModel в классе RowSorter<M>
Параметры:
index - индекс строки в терминах представления
Возвращает:
индекс строки в терминах представления
Исключения:
IndexOutOfBoundsException - если index находится за пределами диапазона представления

sort

public void sort()

Сортирует и фильтрует строки в представлении на основе ключей сортировки столбцов, которые в настоящее время сортируются, и фильтра, если таковой имеется, связанного с этим сортировщиком. Пустой sortKeys список указывает, что представление должно быть несортированным, так же как и модель.

См. также:
setRowFilter(javax.swing.RowFilter<? super M, ? super I>), setSortKeys(java.util.List<? extends javax.swing.RowSorter.SortKey>)

useToString

protected boolean useToString(int column)

Возвращает, нужно ли преобразовывать значение в строку перед выполнением сравнений при сортировке. Если true, ModelWrapper.getStringValueAt будет использовано, иначе ModelWrapper.getValueAt будет использовано. Подклассы, такие как TableRowSorter, должны учитывать это значение в реализации ModelWrapper.

Параметры:
column - индекс колонки для проверки, в терминах базовой модели
Исключения:
IndexOutOfBoundsException - если column недействителен

setComparator

public void setComparator(int column,
                          Comparator<?> comparator)

Устанавливает Comparator для использования при сортировке указанной колонки. Это не запускает сортировку. Если вы хотите отсортировать после установки компаратора, вам нужно явно вызвать sort.

Параметры:
column - индекс колонки, для которой будет использован Comparator , в терминах базовой модели
comparator - Comparator для использования
Исключения:
IndexOutOfBoundsException - если column находится за пределами диапазона базовой модели

getComparator

public Comparator<?> getComparator(int column)

Возвращает Comparator для указанной колонки. Возвратит null , если для колонки не был указан Comparator.

Параметры:
column — столбец для извлечения Comparator, в терминах базовой модели
Возвращает:
значение Comparator для указанного столбца
Выбрасывает:
IndexOutOfBoundsException — если столбец выходит за пределы диапазона базовой модели

getViewRowCount

public int getViewRowCount()

Возвращает количество строк в представлении. Если содержимое отфильтровано, это значение может отличаться от количества строк в базовой модели.

Определено в:
getViewRowCount в классе RowSorter<M>
Возвращает:
количество строк в представлении
См. также:
RowSorter.getModelRowCount()

getModelRowCount

public int getModelRowCount()

Возвращает количество строк в базовой модели.

Определено в:
getModelRowCount в классе RowSorter<M>
Возвращает:
количество строк в базовой модели
См. также:
RowSorter.getViewRowCount()

modelStructureChanged

public void modelStructureChanged()

Вызывается, когда структура базовой модели полностью изменилась. Например, если изменилось количество столбцов в TableModel, этот метод будет вызван.

Обычно вы не вызываете этот метод. Этот метод является общедоступным, чтобы позволить классам представления вызывать его.

Определено в:
modelStructureChanged в классе RowSorter<M>

allRowsChanged

public void allRowsChanged()

Вызывается, когда содержимое базовой модели полностью изменилось. Структура таблицы остается неизменной, изменились только данные. Это обычно отправляется, когда слишком дорого характеризовать изменение в терминах других методов.

Обычно вы не вызываете этот метод. Этот метод является общедоступным, чтобы позволить классам представления вызывать его.

Определено в:
allRowsChanged в классе RowSorter<M>

rowsInserted

public void rowsInserted(int firstRow,
                         int endRow)

Вызывается, когда строки были вставлены в базовую модель в указанном диапазоне (включительно).

Аргументы указывают индексы затронутого диапазона. Первый аргумент — с точки зрения модели до изменения, и должен быть меньше или равен размеру модели до изменения. Второй аргумент — с точки зрения модели после изменения, и должен быть меньше размера модели после изменения. Например, если у вас есть модель из 5 строк и вы добавляете 3 элемента в конец модели, индексы будут 5, 7.

Обычно вы не вызываете этот метод. Этот метод является общедоступным, чтобы позволить классам представления вызывать его.

Определено в:
rowsInserted в классе RowSorter<M>
Параметры:
firstRow — первая строка
endRow — последняя строка
Выбрасывает:
IndexOutOfBoundsException — если любой из аргументов недействителен, или firstRow > endRow

rowsDeleted

public void rowsDeleted(int firstRow,
                        int endRow)

Вызывается, когда строки были удалены из базовой модели в указанном диапазоне (включительно).

Аргументы указывают индексы затронутого диапазона и относятся к модели до изменения. Например, если у вас есть модель из 5 строк и вы удаляете 3 элемента из конца модели, индексы будут 2, 4.

Обычно вы не вызываете этот метод. Этот метод является общедоступным, чтобы позволить классам представления вызывать его.

Определено в:
rowsDeleted в классе RowSorter<M>
Параметры:
firstRow — первая строка
endRow — последняя строка
Выбрасывает:
IndexOutOfBoundsException — если любой из аргументов выходит за пределы диапазона модели до изменения, или firstRow > endRow

rowsUpdated

public void rowsUpdated(int firstRow,
                        int endRow)

Вызывается, когда строки были изменены в базовой модели в указанном диапазоне (включительно).

Обычно вы не вызываете этот метод. Этот метод является общедоступным, чтобы позволить классам представления вызывать его.

Определено в:
rowsUpdated в классе RowSorter<M>
Параметры:
firstRow — первая строка, в терминах базовой модели
endRow — последняя строка, в терминах базовой модели
Выбрасывает:
IndexOutOfBoundsException — если любой из аргументов выходит за пределы диапазона базовой модели, или firstRow > endRow

rowsUpdated

public void rowsUpdated(int firstRow,
                        int endRow,
                        int column)

Вызывается, когда столбец в строках был обновлен в базовой модели в указанном диапазоне.

Обычно вы не вызываете этот метод. Этот метод является общедоступным, чтобы позволить классам представления вызывать его.

Определено в:
rowsUpdated в классе RowSorter<M>
Параметры:
firstRow — первая строка, в терминах базовой модели
endRow — последняя строка, в терминах базовой модели
column — столбец, который изменился, в терминах базовой модели
Выбрасывает:
IndexOutOfBoundsException — если любой из аргументов выходит за пределы диапазона базовой модели после изменения, firstRow > endRow, или column выходит за пределы диапазона базовой модели

© 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.

Spec-Zone.ru

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