创建自动滚动的DataGrid

前几天要做一个能自动滚动的DataGrid,当鼠标移动到某个项目时停止滚动,移出时则继续滚动。我把代码整理成一个组件,与大家分享。

点击此处查看本实例的效果,点击此处下载本实例的源码。

源码中我们用Timer来添加项目,当数据源变化时会派发CollectionEvent.COLLECTION_CHANGE事件,其处理方法会将DataGrid顶边到内容的偏移量 设定为最大值,从而滚动一行。当定时器的触发的总次数达到数据提供者的初始项目总数时,定时器会重置再启动,从而实现循环滚动。

AutoScrollingDataGrid有两个扩展属性。delay表示滚动一行数据所需的时间,resultCollection表示数据提供者的初始项目集。

我们的方法会让DataGrid的数据提供者的项目不断增多,但因为是有规律地增多,所以基本上实现了目标。不过,这样方法会导致DataGrid的排序混乱。感兴趣的可以想一下有什么好方法来解决这个问题。

发表评论