java jtable 单元格合并_JTable单元格合并AAA

本文介绍了如何在Java中实现JTable的单元格合并。通过重载`getCellRect()`,`columnAtPoint()`和`rowAtPoint()`方法,以及创建自定义的数据模型和渲染器,详细阐述了跨列单元格合并的步骤和关键代码实现。
摘要由CSDN通过智能技术生成

为了合并单元格,我们需要重载(overwrite)Jtable的三个方法:getCellRect(),columnAtPoint(),and rowAtPoint()。第一个方法返回一个单元格的边界(Rectangle类),第二、三个方法分别返回屏幕指定位置的列和行。

swing components 是使用ComponentUI对象来完成渲染的。所以我们需要找出渲染Jtable的ComponentUI对象,并且修改它以达到我们的目的。

由于要实现多行多列单元格合并需要多个类相互协作,直接写出来的话可能比较复杂,所以我先讲一下跨列的单元格合并的方法,然后再提供一个完整的例子。

由于swing里没有可记录单元格合并情况的数据模型,所以我们需要一个新的类,它要包涵一个方法来取得单元格的所跨越的列数。另外,为了使用Jtable画(paint)起来更容易些,我们需要一个方法来确定指定单元格是否被其它单元格所覆盖,被哪个单元格覆盖。

CombineData.java

现在我们开始重载上面提及过的三个方法。由于我们目前只关注于跨列单元格的合并,我们会使用Jtable自身的方法来取得指定单元格的列值,并且计算出覆盖该单元格的可视单元格列值(如果该单元格本来就是可视的,则返回自身列值)。在单元格合并后,在合并区域内只有一个跨越多列的可视单元格,其它被覆盖的单元格则不会再被渲染。当使用getCellRect()方法取得被覆盖的单元格的大小时,都返回覆盖该单元格的可视单元格的大小。

CombineTable.java

现在创建一个表格的渲染对象。不同的用户接口管理器(user interface managers)使用不同的类来画表格。我们会继承子类 javax.swing.plaf.basic.BasicTableU

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值