java中5%3_java - 如何在GXT 3.x中实现冻结列? - 堆栈内存溢出

基本思想是您需要两个不同的滚动容器,一个包含固定列,另一个包含滚动列。 这些中的每一个都需要位于不同的视口中,因此标准的Grid / GridView不能很好地处理它 - 它们对滚动应该如何表现做出假设,因此简单地子类化一个或两个可能是相当复杂的。

相反,您可以构建两个网格,一个用于锁定列,一个用于滚动列。 每个人都可以处理他们自己的ColumnConfig类,绘制标题和行,并链接到同一个ListStore以确保他们的数据同步 - 商店中的更改将传递给两个监听网格。

为了获得完整的效果,需要一些额外的布线:

链接滚动。 从每个Grid收听BodyScrollEvent ,并将另一个滚动到同一个地方(仅更改top ,而不是left ,因为您不希望控制另一个)。

大小调整是第二大部分 - 两个网格都需要它们的可滚动高度相同,但是当实际显示滚动条时,水平滚动需要底部的缓冲区。 通常,Grid会根据其父级的指令进行调整,但有时您会直接调整Grid的大小 - 在这种情况下,不需要执行此步骤,只需稍微改变两个网格的大小。 否则,您需要构建布局以正确配置它。

最后,锁定的列需要隐藏其垂直滚动条 - 用户无需看到两个垂直滚动条。

这涵盖了基本用例,但没有处理替代GridView实现之类的事情 - GroupingView和子类将需要链接扩展(并隐藏组标题,以便它们不会出现两次,再加上处理组的事实当后半部分向侧面滚动时,行不应该被拆分), TreeGridView和TreeGrid将需要链接扩展节点并隐藏第二个网格中的树+/-图标。

为了避免混淆问题,我删除了该网格中的许多其他功能,例

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值