2012-03-06 3 views
2

Я использую Eclipse Indigo SR1 с JDK 1.7, на Windows 7 Pro. Я написал приложение для рабочего стола, основанное на Swing.Как скрыть строку в JTable?

Мое приложение включает JTable; он показывает много записей типа T, по одной строке на запись. Модель таблицы указывает на Vector vect, named vect, содержащий все данные, которые будут отображаться в JTable.

Приложение включает в себя комбо, названное Село, показывая три значения: 0, 1, 2.

Когда Село = 0, каждая запись Vect должно быть видны в JTable.

Когда sele = 1, JTable должен показывать только записи vect с индексом нечетной строки, а все записи с четным индексом строки не должны быть видимыми. Viceversa, когда sele = 2.

Итак, вот мой вопрос: как я могу сделать строку, не видимую в JTable? Я не могу использовать модель таблицы, потому что она указывает на vect, который содержит «все» данные.

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

Я пробовал другой путь: если r - это индекс строки, и я хочу, чтобы эта строка не была видна, я пишу table.setRowHeight (r, 0), но эта команда генерирует исключение, t устанавливается в ноль.

Я мог бы решить проблему, разделив данные, разделив vect на два, но мне это не нравится.

Есть ли у кого-нибудь идеи?

спасибо заранее, Уильям

PS: кто-то сказал мне, чтобы создать фильтрующую TableModel, который оборачивает существующий TableModel. Модель фильтрации будет чувствительна к критериям фильтрации и запускает соответствующие методы (TableDataChanged) при изменении фильтра. Метод getRowCount возвращает отфильтрованный счетчик. Метод getValueAt сопоставляет отфильтрованную строку с фактической строкой в ​​базовой таблицеModel.

Mah, возможно, это хорошая идея, но, честно говоря, я не в состоянии понять это ...

+1

Фильтрация - хорошая идея, или вы также можете реализовать 3 разных модели. – talnicolas

+1

Вы проверили это: http://stackoverflow.com/questions/944006/how-can-i-hide-make-invisible-row-in-jtable – assylias

+3

JTable поддерживает фильтрацию из коробки, просто используйте ее – kleopatra

ответ

4

Использовать TableRowSorter - что:

Реализация RowSorter, которая обеспечивает сортировку и фильтрацию с использованием TableModel. ..

См How to Use Tables & особенно Sorting and Filtering для получения дополнительной информации.

+2

+1 для базового материала, другим способом может быть использование [RowFilter] (http://stackoverflow.com/a/8187799/714968) напрямую, EDIT (-: эта ссылка не является down_vote resist :-) – mKorbel

Смежные вопросы