JTable的排序和过滤(分层的思想)

      JTable采用的是MVC模式,JTable控制可视外观,TableModel控制数据模型。JTable不存储数据,所有的数据都从TableModel得到。TableModel可以存储数据,也可以不存储数据直接通过计算得到。这里要实现点击某列,根据此列将所有的行进行排序。

      将JTable看作是视图层,TableModel看作是物理存储层。通过在视图层和物理存储层之间增加一个逻辑存储层来实现JTable的排序和过滤。即通过逻辑层在视图层和物理层之间建立一种映射,在JTable上获得的是逻辑下标,然后通过逻辑层的映射转换将逻辑下标变换为数据模型的物理下标。而按照某列对所有行进行排序实际是对逻辑层中的逻辑下标对应的物理下标进行的逻辑排序,TableModel实际上并没有被改变。

               

      SortingTableModel中Row[] rows保存着视图层到物理层的映射,通过

rows[i].getIndex()即可以将逻辑下标i转换为物理下标。Row包含属性物理下标index,同时实现了接口Comparable,因为要用到Arrays.sort()对rows中的内容进行排序。SortingTableModel继承AbstractTableModel,包含只有DefaultTableModel一个参数的构造方法,也就是通过物理层(DefaultTableModel)初始化逻辑层(SortingTableModel)。最好在实现AbstractTableModel中的几个抽象方法就完成了逻辑层的编写。不多说,直接贴代码

 

      还可以通过增加逻辑层实现行的隐藏于显示,因为JTable没有提供此类方法。

      分层的思想在计算机领域应用广泛,类似的可以想到计算机网络的七层体系结构,web应用的分层(就想到这些)。分层绝对是程序设计的利器,可以降低模块的耦合性,提高内聚性,还可以方便的实现复用。日后需要好好学习,好好沉淀以把握其精髓。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值