如何在JTable中隐藏一行?

时间:2012-03-06 18:04:12

标签: java swing jtable

我在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中的实际行。

麻省,也许这是一个好主意,但坦率地说,我无法理解......

1 个答案:

答案 0 :(得分:4)

使用TableRowSorter - 即:

  

RowSorter的一个实现,它使用TableModel提供排序和过滤。 ..

How to Use Tables&特别是Sorting and Filtering了解更多信息。