Проблема с фильтрацией JTable - PullRequest
2 голосов
/ 26 февраля 2012

Вот мой сценарий: у меня есть 3 вида приложения, 2 из которых идентичны, за исключением одного - у одного есть дополнительная фильтрация.Все представления используют одну и ту же модель, потому что они отображают одни и те же данные (несколько) по-разному.Оба аналогичных представления являются JTables и следующие:

  • Просмотр 1 фильтрует результаты на базовом уровне
  • Просмотр 2 (должен) фильтрует в первую очередь на этом же базовом уровне, а такжекак на более детальном уровне

Я могу и создал фильтр для второго представления, однако, поскольку оба представления используют одну и ту же модель (которая реализует TableModel), они оба вызывают одну и ту же функцию в модели.для данных - getValueAt(int rowIndex, int columnIndex) - которые в настоящее время фильтруют только на базовом уровне.

Какой самый простой способ дополнительно выполнить фильтрацию для второго представления, не затрагивая 1-й?Как мне реализовать это?

Заранее спасибо.

1 Ответ

5 голосов
/ 26 февраля 2012

Swing JTable поддерживает фильтрацию в представлении из коробки, просто используйте его, что-то вроде (включите сортировку и отсутствие приведения типов)

 RowFilter basic = ..
 RowFilter other = ...
 RowFilter finer = Rowfilter.andFilter(basic, other);

 basicTable.getRowSorter().setRowFilter(basic);
 finerTable.getRowSorter().setRowFilter(finer);
...