我在Windows 7 Pro上使用Eclipse Indigo SR1和JDK 1.7。 我已经编写了一个基于Swing的桌面应用程序。
我的应用包括JTable;它显示了许多类型为T的记录,每条记录一行。 表模型指向Vector vect,名为vect,包含要在JTable中显示的所有数据。
该应用程序包含一个名为sele的组合,显示三个值:0,1,2。
当sele = 0时,必须在JTable中看到vect的每个记录。
当sele = 1时,JTable必须仅显示具有奇数行索引的vect记录,并且所有具有偶数行索引的记录都不可见。副词,当sele = 2时。
所以,这是我的问题:如何在JTable中看不到行? 我不能使用表模型,因为它指向包含" all"数据
我尝试了一个表格单元格渲染器,但似乎您可以设置单元格的颜色,但不能将其设置为不可见或修改其大小。
我尝试过另一种方式:如果r是行索引,并且我希望该行不可见,我会编写table.setRowHeight(r,0),但是此指令会引发异常,高度可以& #39; t设置为零。
我可以通过拆分数据来解决问题,将vect分成两部分,但我不喜欢这样。
有人有想法吗?
提前, 威廉
PS:有人告诉我要创建一个包装现有TableModel的过滤TableModel。过滤模型对过滤条件很敏感,并在更改过滤器时触发相应的方法(TableDataChanged)。 getRowCount方法将返回筛选的计数。 getValueAt方法将过滤的行映射到基础TableModel中的实际行。 麻省,也许这是一个好主意,但坦率地说,我无法理解......答案 0 :(得分:4)
使用TableRowSorter
- 即:
RowSorter的一个实现,它使用TableModel提供排序和过滤。 ..
见How to Use Tables&特别是Sorting and Filtering了解更多信息。