M - тип модели, которая должна быть реализацией TableModelpublic class TableRowSorter<M extends TableModel> extends DefaultRowSorter<M,Integer>
RowSorter это обеспечивает сортировку и фильтрацию использования a TableModel. Следующая выставочная сортировка добавления в качестве примера к a JTable: TableModel myModel = createMyTableModel(); JTable table = new JTable(myModel); table.setRowSorter(new TableRowSorter(myModel));Это сделает все проводное соединение так, что, когда пользователь сделает соответствующий жест, такой как щелчок по заголовку столбца, таблица визуально сортирует.
JTable's основанные на строке методы и JTable's модель выбора обращаются к представлению а не базовой модели. Поэтому, необходимо преобразовать между двумя. Например, чтобы получить выбор с точки зрения 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 использование Comparators для того, чтобы сделать сравнения. Следующее определяет как a Comparator выбирается для столбца:
Comparator был определен для столбца setComparator метод, используйте это. getColumnClass String, используйте Comparator возвращенный Collator.getInstance(). Comparable, используйте a Comparator это вызывает compareTo метод. TableStringConverter был определен, используйте это, чтобы преобразовать значения в Strings и затем используют 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 метод вызывается), следующее сбрасывается к их значениям по умолчанию: Comparators столбцом, текущим порядком сортировки, и является ли каждый столбец поддающимся сортировке. Порядок сортировки по умолчанию является естественным (то же самое как модель), и столбцы являются поддающимися сортировке по умолчанию.
TableRowSorter имеет один формальный параметр типа: тип модели. Передача в типе, который соответствует точно Вашей модели, позволяет Вам фильтровать основанный на Вашей модели без кастинга. Сошлитесь на документацию RowFilter для примера этого.
ПРЕДУПРЕЖДЕНИЕ: DefaultTableModel возвращает столбец class Object. Как таковой все сравнения будут сделаны, используя toString. Это может быть излишне дорого. Если столбец только содержит один тип имеющий значение, такой как Integer, следует переопределить getColumnClass и возвратите соответствующее Class. Это существенно увеличит производительность этого class.
JTable, RowFilter, DefaultTableModel, Collator, ComparatorDefaultRowSorter.ModelWrapper<M,I>RowSorter. SortKey| Конструктор и Описание |
|---|
TableRowSorter()
Создает a
TableRowSorter с пустой моделью. |
TableRowSorter(M model)
Создает a
TableRowSorter использование model как базовое TableModel. |
| Модификатор и Тип | Метод и Описание |
|---|---|
Comparator<?> |
getComparator(int column)
Возвраты
Comparator для указанного столбца. |
TableStringConverter |
getStringConverter()
Возвращает объект, ответственный за преобразование значений от модели до строк.
|
void |
setModel(M model)
Наборы
TableModel использовать в качестве базовой модели для этого TableRowSorter. |
void |
setStringConverter(TableStringConverter stringConverter)
Устанавливает объект, ответственный за преобразование значений от модели до строк.
|
protected boolean |
useToString(int column)
Возвраты, преобразовать ли значение в строку прежде, чем сделать сравнения, сортируя.
|
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, toggleSortOrderaddRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListenerpublic TableRowSorter()
TableRowSorter с пустой моделью.public TableRowSorter(M model)
TableRowSorter использование model как базовое TableModel.model - базовое TableModel использовать, null обрабатывается как пустая модельpublic void setModel(M model)
TableModel использовать в качестве базовой модели для этого TableRowSorter. Значение null может использоваться, чтобы установить пустую модель.model - базовая модель, чтобы использовать, или nullpublic void setStringConverter(TableStringConverter stringConverter)
null это используется, чтобы преобразовать любые объектные значения, у которых нет зарегистрированного Comparator, к строкам.stringConverter - объект, ответственный за преобразование значений от модели до строкpublic TableStringConverter getStringConverter()
public Comparator<?> getComparator(int column)
Comparator для указанного столбца. Если a Comparator не был определен, используя setComparator метод a Comparator будет возвращен основанный на столбце class (TableModel.getColumnClass) из указанного столбца. Если столбец class String, Collator.getInstance возвращается. Если столбец class реализует Comparable частное Comparator возвращается, который вызывает compareTo метод. Иначе Collator.getInstance возвращается.getComparator в class DefaultRowSorter<M extends TableModel,Integer>column - столбец, чтобы выбрать Comparator для, с точки зрения базовой моделиComparator для указанного столбцаIndexOutOfBoundsException - если столбец вне диапазона базовой моделиprotected boolean useToString(int column)
ModelWrapper.getStringValueAt будет использоваться, иначе ModelWrapper.getValueAt будет использоваться. Это до подклассов, такой как TableRowSorter, соблюдать это значение в их ModelWrapper реализация.useToString в class DefaultRowSorter<M extends TableModel,Integer>column - индексирование столбца, чтобы протестировать, с точки зрения базовой моделиIndexOutOfBoundsException - если column не допустимо
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92