top of page

JTable.getRowCount()

Наверно вам известно, что к таблице JTabel можно применить фильтр. Один из таких фильтров описан в книге Java. Том 2. Расширенные средства программирования.

Получается что-то вроде этого:

HashSet<Integer> filteredRows = new HashSet<Integer>();

RowFilter<AbstractTableModel, Integer> filter =

new RowFilter<AbstractTableModel, Integer>() {

public boolean include (

Entry<? extends AbstractTableModel, ? extends Integer> entry) {

return filteredRows.contains(entry.getIdentifier());

}

};

TableRowSorter<AbstractTableModel sorter = new TableRowSorter<AbstractTableModel>(model);

sorter.setRowFilter(filter);

Но разговор не о фильтре, а о работе с таблицей, когда к ней применен фильтр.

Дело в том, что в таблице есть метод getRowCount() который возвращает количество строк в таблице. Такой же метод есть в модели таблицы.

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

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

Та же ситуация и с методами getValueAt() и setValueAt(). И тот и другой есть и у таблицы, и у модели. Соответственно, если вы используете getRowCount() таблицы, чтобы обойти все строки, то не забывайте использовать getValueAt() и setValueAt() также таблицы а не модели.

Избранные посты
Проверьте позже
Когда посты будут опубликованы, вы увидите их здесь.
Недавние посты
Архив
Поиск по тегам
Тегов пока нет.
Мы в соцсетях
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square
bottom of page