Spec-Zone.ru › OpenJDK 8

Класс TableRowSorter<M extends TableModel>

  • java.lang.Object
    • javax.swing.RowSorter<M>
      • javax.swing.DefaultRowSorter<M,Integer>
        • javax.swing.table.TableRowSorter<M>
Type Parameters:
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 для столбца:

  1. Если для столбца был указан Comparator методом setComparator, используйте его.
  2. Если класс столбца, возвращаемый методом getColumnClass, является String, используйте Comparator , возвращаемый методом Collator.getInstance().
  3. Если класс столбца реализует Comparable, используйте Comparator , который вызывает метод compareTo.
  4. Если был указан TableStringConverter, используйте его для преобразования значений в String и затем используйте Comparator , возвращаемый методом Collator.getInstance().
  5. В противном случае используйте 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. Это значительно повысит производительность этого класса.

Since:
1.6
See Also:
JTable, RowFilter, DefaultTableModel, Collator, Comparator

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

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

DefaultRowSorter.ModelWrapper<M,I>

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

RowSorter.SortKey

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

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

Создаёт TableRowSorter с пустой моделью.

TableRowSorter(M model)

Создаёт 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)

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

Методы, унаследованные от класса javax.swing.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

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

addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, 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 - индекс столбца для проверки, в терминах основной модели
Исключения:
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.

Spec-Zone.ru

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