Класс TableRowSorter<M extends TableModel>
- Параметры типа:
M— тип модели, которая должна быть реализациейTableModel
public class TableRowSorter<M extends TableModel> extends DefaultRowSorter<M,Integer>
RowSorter, обеспечивающая сортировку и фильтрацию с помощью TableModel. В следующем примере показано, как добавить сортировку в JTable: TableModel myModel = createMyTableModel(); JTable table = new JTable(myModel); table.setRowSorter(new TableRowSorter(myModel));Это выполнит всю необходимую настройку, чтобы при соответствующем действии пользователя, например щелчке по заголовку столбца, таблица визуально сортировалась.
Методы работы со строками в JTable и модель выбора в JTable относятся к представлению, а не к базовой модели. Поэтому необходимо преобразовывать индексы из одного представления в другое. Например, чтобы получить выбранные строки в терминах myModel, необходимо преобразовать индексы:
int[] selection = table.getSelectedRows();
for (int i = 0; i < selection.length; i++) {
selection[i] = table.convertRowIndexToModel(selection[i]);
}
Аналогично, чтобы выбрать строку в JTable по координате из базовой модели, выполните обратное преобразование:
table.setRowSelectionInterval(table.convertRowIndexToView(row),
table.convertRowIndexToView(row));
В предыдущем примере предполагается, что фильтрация не включена. Если фильтрация включена, convertRowIndexToView вернёт -1 для местоположений, не видимых в представлении.
TableRowSorter использует Comparator для выполнения сравнений. Ниже описано, как выбирается Comparator для столбца:
- Если для столбца задан
Comparatorс помощью методаsetComparator, используйте его. - Если класс столбца, возвращаемый методом
getColumnClass, —String, используйтеComparator, возвращаемый методомCollator.getInstance(). - Если класс столбца реализует
Comparable, используйтеComparator, вызывающий методcompareTo. - Если задан
TableStringConverter, используйте его для преобразования значений вString, а затем используйтеComparator, возвращаемый методомCollator.getInstance(). - В противном случае используйте
Comparator, возвращаемый методомCollator.getInstance()для результатов вызоваtoStringу объектов.
Помимо сортировки, TableRowSorter предоставляет возможность фильтрации. Фильтр задаётся с помощью метода setFilter. В следующем примере будут отображаться только строки, содержащие строку "foo":
TableModel myModel = createMyTableModel();
TableRowSorter sorter = new TableRowSorter(myModel);
sorter.setRowFilter(RowFilter.regexFilter(".*foo.*"));
JTable table = new JTable(myModel);
table.setRowSorter(sorter);
Если структура базовой модели изменится (будет вызван метод modelStructureChanged), для следующих параметров будут восстановлены значения по умолчанию: Comparator по столбцам, текущий порядок сортировки и возможность сортировки каждого столбца. По умолчанию используется естественный порядок сортировки (такой же, как в модели), а столбцы доступны для сортировки.
TableRowSorter имеет один формальный параметр типа: тип модели. Передача типа, точно соответствующего вашей модели, позволяет фильтровать данные на основе модели без приведения типов. Пример приведён в документации RowFilter.
ПРЕДУПРЕЖДЕНИЕ: DefaultTableModel возвращает для столбца класс Object. Поэтому все сравнения будут выполняться с помощью toString. Это может быть неоправданно затратным. Если столбец содержит значения только одного типа, например Integer, следует переопределить getColumnClass и возвращать соответствующий Class. Это значительно повысит производительность данного класса.
- С версии:
- 1.6
- См. также:
Краткое описание вложенных классов
Вложенные классы и интерфейсы, объявленные в классе DefaultRowSorter
DefaultRowSorter.ModelWrapper<M, I> | Модификатор и тип | Класс | Описание |
|---|---|---|
protected static class |
DefaultRowSorter.ModelWrapper<M, |
DefaultRowSorter.ModelWrapper отвечает за предоставление данных, сортируемых с помощью DefaultRowSorter. |
Вложенные классы и интерфейсы, объявленные в классе RowSorter
RowSorter.SortKey | Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
RowSorter.SortKey |
SortKey описывает порядок сортировки для определённого столбца. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
TableRowSorter() |
Создаёт TableRowSorter с пустой моделью. |
TableRowSorter |
Создаёт TableRowSorter, используя model в качестве базовой TableModel. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Comparator |
getComparator |
Возвращает Comparator для указанного столбца. |
TableStringConverter |
getStringConverter() |
Возвращает объект, отвечающий за преобразование значений модели в строки. |
void |
setModel |
Задаёт TableModel, используемую в качестве базовой модели для этого TableRowSorter. |
void |
setStringConverter |
Задаёт объект, отвечающий за преобразование значений модели в строки. |
protected boolean |
useToString |
Возвращает значение, указывающее, следует ли преобразовывать значение в строку перед сравнением при сортировке. |
Методы, объявленные в классе DefaultRowSorter
allRowsChanged, convertRowIndexToModel, convertRowIndexToView, getMaxSortKeys, getModel, getModelRowCount, getModelWrapper, getRowFilter, getSortKeys, getSortsOnUpdates, getViewRowCount, isSortable, modelStructureChanged, rowsDeleted, rowsInserted, rowsUpdated, rowsUpdated, setComparator, setMaxSortKeys, setModelWrapper, setRowFilter, setSortable, setSortKeys, setSortsOnUpdates, sort, toggleSortOrder | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
allRowsChanged() |
Вызывается, когда содержимое базовой модели полностью изменилось. |
int |
convertRowIndexToModel |
Возвращает местоположение index в терминах базовой модели. |
int |
convertRowIndexToView |
Возвращает местоположение index в терминах представления. |
int |
getMaxSortKeys() |
Возвращает максимальное количество ключей сортировки. |
final M |
getModel() |
Возвращает базовую модель. |
int |
getModelRowCount() |
Возвращает количество строк в базовой модели. |
protected final DefaultRowSorter.ModelWrapper |
getModelWrapper() |
Возвращает оболочку модели, предоставляющую сортируемые и фильтруемые данные. |
RowFilter |
getRowFilter() |
Возвращает фильтр, определяющий, какие строки следует скрыть из представления, если таковые имеются. |
List |
getSortKeys() |
Возвращает текущие ключи сортировки. |
boolean |
getSortsOnUpdates() |
Возвращает true, если при обновлении базовой модели должна выполняться сортировка; в противном случае возвращает false. |
int |
getViewRowCount() |
Возвращает количество строк в представлении. |
boolean |
isSortable |
Возвращает true, если указанный столбец доступен для сортировки; в противном случае — false. |
void |
modelStructureChanged() |
Вызывается, когда структура базовой модели полностью изменилась. |
void |
rowsDeleted |
Вызывается, когда из базовой модели удаляются строки в указанном диапазоне (включительно). |
void |
rowsInserted |
Вызывается, когда в базовую модель вставляются строки в указанном диапазоне (включительно). |
void |
rowsUpdated |
Вызывается, когда строки базовой модели изменяются в указанном диапазоне (включительно). |
void |
rowsUpdated |
Вызывается, когда столбец в строках базовой модели обновляется в указанном диапазоне. |
void |
setComparator |
Задаёт Comparator, используемый при сортировке указанного столбца. |
void |
setMaxSortKeys |
Задаёт максимальное количество ключей сортировки. |
protected final void |
setModelWrapper |
Задаёт оболочку модели, предоставляющую сортируемые и фильтруемые данные. |
void |
setRowFilter |
Задаёт фильтр, определяющий, какие строки следует скрыть из представления, если таковые имеются. |
void |
setSortable |
Задаёт, доступен ли указанный столбец для сортировки. |
void |
setSortKeys |
Задаёт ключи сортировки. |
void |
setSortsOnUpdates |
Если значение равно true, указывает, что при обновлении базовой модели должна выполняться сортировка (вызывается rowsUpdated). |
void |
sort() |
Сортирует и фильтрует строки в представлении на основе ключей сортировки столбцов, которые в данный момент сортируются, и фильтра, если он связан с этим средством сортировки. |
void |
toggleSortOrder |
Изменяет порядок сортировки с восходящего на нисходящий (или с нисходящего на восходящий), если указанный столбец уже является основным столбцом сортировки; в противном случае назначает указанный столбец основным и задаёт восходящий порядок сортировки. |
Методы, объявленные в классе RowSorter
addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListener | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addRowSorterListener |
Добавляет RowSorterListener для получения уведомлений об этом RowSorter. |
protected void |
fireRowSorterChanged |
Уведомляет слушателя об изменении соответствия. |
protected void |
fireSortOrderChanged() |
Уведомляет слушателя об изменении порядка сортировки. |
void |
removeRowSorterListener |
Удаляет RowSorterListener. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект другому объекту. |
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 |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка времени. |
final void |
wait |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка времени. |
Подробное описание конструкторов
TableRowSorter
public TableRowSorter()
TableRowSorter с пустой моделью.TableRowSorter
public TableRowSorter(M model)
TableRowSorter, используя model в качестве базовой TableModel.- Параметры:
-
model— используемая базоваяTableModel;nullобрабатывается как пустая модель
Подробное описание методов
setModel
public void setModel(M model)
TableModel, используемую в качестве базовой модели для этого TableRowSorter. Чтобы задать пустую модель, можно использовать значение null.- Параметры:
-
model— используемая базовая модель илиnull
setStringConverter
public void setStringConverter(TableStringConverter stringConverter)
null, этот объект используется для преобразования в строки значений объектов, для которых не зарегистрирован Comparator.- Параметры:
-
stringConverter— объект, отвечающий за преобразование значений модели в строки
getStringConverter
public TableStringConverter getStringConverter()
- Возвращает:
- объект, отвечающий за преобразование значений в строки.
getComparator
public Comparator<?> getComparator(int column)
Comparator для указанного столбца. Если Comparator не задан с помощью метода setComparator, будет возвращён Comparator, выбранный на основе класса столбца (TableModel.getColumnClass) указанного столбца. Если класс столбца — String, возвращается Collator.getInstance. Если класс столбца реализует Comparable, возвращается закрытый Comparator, вызывающий метод compareTo. В противном случае возвращается Collator.getInstance.- Переопределяет:
-
getComparatorв классеDefaultRowSorter<M extends TableModel, Integer> - Параметры:
-
column— столбец, для которого извлекаетсяComparator, в терминах базовой модели - Возвращает:
Comparatorдля указанного столбца- Выбрасывает:
-
IndexOutOfBoundsException— если столбец находится за пределами диапазона базовой модели
useToString
protected boolean useToString(int column)
ModelWrapper.getStringValueAt, в противном случае — ModelWrapper.getValueAt. Подклассы, например TableRowSorter, должны учитывать это значение в своей реализации ModelWrapper.- Переопределяет:
-
useToStringв классеDefaultRowSorter<M extends TableModel, Integer> - Параметры:
-
column— индекс проверяемого столбца в терминах базовой модели - Возвращает:
- true, если перед сравнением при сортировке значения следует преобразовывать в строки
- Выбрасывает:
-
IndexOutOfBoundsException— еслиcolumnнедопустим
© 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.