Класс TableRowSorterTableModel>
- java.lang.Object
- javax.swing.RowSorter
- javax.swing.DefaultRowSorter
Integer - javax.swing.table.TableRowSorter
- javax.swing.table.TableRowSorter
- javax.swing.DefaultRowSorter
- javax.swing.RowSorter
- Тип параметров:
-
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
- См. также:
-
JTable,RowFilter,DefaultTableModel,Collator,Comparator
Вложенные классы
Вложенные классы/интерфейсы, объявленные в классе javax.swing.DefaultRowSorter
DefaultRowSorter.ModelWrapper<M,I> Вложенные классы/интерфейсы, объявленные в классе javax.swing.RowSorter
RowSorter.SortKey Конструкторы
| Конструктор | Описание |
|---|---|
TableRowSorter() | Создаёт |
TableRowSorter(M model) | Создаёт |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
Comparator<?> | getComparator(int column) | Возвращает |
TableStringConverter | getStringConverter() | Возвращает объект, ответственный за преобразование значений из модели в строки. |
void | setModel(M model) | Устанавливает |
void | setStringConverter(TableStringConverter stringConverter) | Устанавливает объект, ответственный за преобразование значений из модели в строки. |
protected boolean | useToString(int column) | Возвращает, следует ли преобразовывать значение в строку перед выполнением сравнения при сортировке. |
Методы, объявленные в классе javax.swing.DefaultRowSorter
convertRowIndexToModel, convertRowIndexToView, getMaxSortKeys, getModel, getModelWrapper, getRowFilter, getSortKeys, getSortsOnUpdates, isSortable, rowsDeleted, rowsInserted, rowsUpdated, rowsUpdated, setComparator, setMaxSortKeys, setModelWrapper, setRowFilter, setSortable, setSortKeys, setSortsOnUpdates, sort, toggleSortOrder Методы, объявленные в классе javax.swing.RowSorter
addRowSorterListener, allRowsChanged, fireRowSorterChanged, fireSortOrderChanged, getModelRowCount, getViewRowCount, modelStructureChanged, removeRowSorterListener Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
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)
Возвращает, следует ли преобразовывать значение в строку перед выполнением сравнения при сортировке. Если true, используется ModelWrapper.getStringValueAt, в противном случае используется ModelWrapper.getValueAt. Подклассы, такие как TableRowSorter, должны учитывать это значение в своей реализации метода ModelWrapper.
- Переопределяет:
-
useToStringв классеDefaultRowSorter<M extends TableModel,Integer> - Параметры:
-
column- индекс столбца для проверки, в терминах базовой модели - Возвращает:
- true, если значения должны преобразовываться в строки перед выполнением сравнения при сортировке
- Исключения:
-
IndexOutOfBoundsException- если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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/table/TableRowSorter.html