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() также таблицы а не модели.