JTable列跨越

时间:2020-03-06 14:51:02  来源:igfitidea点击:

我正在尝试使JTable具有可用的列跨度。具体来说,我想将一个" JTable"嵌套在另一个" JTable"中,当用户单击以查看嵌套的表时,它应该展开以向下推动下面的行并填充空白空间。这类似于我们在MS Access中可以嵌套表的情况,单击行上的"展开"按钮将向我们显示嵌套表中的相应条目。

如果有人知道用JTable执行列跨度的方法,我们能指出我正确的方向吗?或者,如果我们知道执行此操作的其他方法,则欢迎我们提出建议。该应用程序是使用Swing构建的。表格中的高级和低级元素在任何解决方案中都必须是可编辑的。使用嵌套的JTable不会有问题,任何其他解决方案都必须考虑到这一点。

解决方案

我们需要为主表编写自己的TableUI。使用我们自己的TableModel来保存其他数据(例如是否扩展行)也可能会有所帮助。但这是可选的。

我编写了一个等于TableUI的equals TableUI,它扩展了一行并显示了一个文本编辑器。在TableUI中,我们需要使用table.setRowHeight(height)动态更改高行。另外,由于我们无法访问私有内容,因此有必要从BaseTableUI复制一些内容。

作为正确方向的指针,请尝试在SwingWiki上的这篇文章,它很好地解释了列跨越的TableUI方法。在此之前,我还尝试了一些替代方法,例如重写TableCellRenderer绘制方法,但没有取得太大的成功。