[Eclipse]GEF入门系列(十、表格的一个实现) - 编程入门网
个量即可增加这条线的长度 ,这个量和表格当前列的数目有关,和列间距也有关,计算的方法看上面的代码很清楚。这 样修改后的效果如下图所示,拖动行到新的位置时也会使用同样的插入线。
图2 与表格同宽的插入线 选中整个行 缺省情况下,鼠标点击一个单元格会在 这个单元格四周产生一个黑色的边框,用来表示被选中的状态。为了让用户能选中整个行, 要修改HeaderCell上的EditPolicy。在前面一篇帖子里已经专门讲过,单元格作为列的子元 素,要修改它的EditPolicy就要在ColumnPart的EditPolicy的createChildEditPolicy()方法 里返回自定义的EditPolicy,这里我返回的是自己实现的DragRowEditPolicy,它继承自GEF 内置的ResizableEditPolicy类,它将被HeaderColumnPart加到子元素HeaderCellPart的 EditPolicy列表。现在就来修改DragRowEditPolicy以实现整个行的选中。 首先要说 明,在GEF里一个图形被选中时出现的黑边和控制点称为Handle,其中黑边称为MoveHandle, 用于移动图形;而那些控制点称为ResizeHandle,用于改变图形的尺寸。要改变黑边的尺寸 (由单元格的宽度扩展为整个表格的宽度),我们得继承MoveHandle并覆盖它的getLocator ()方法,下面的代码是我的实现:
在getLocator()方法里,我们调用了HeaderCellPart的getRowBound()方法用于得到选中 行的位置和尺寸,这个方法的代码如下(放在HeaderCellPart里是因为在Handle里通过 getOwner()可以很容易得到EditPart对象),行尺寸的计算方法与前面插入线的情况类似:
[Eclipse]GEF入门系列(十、表格的一个实现)(3)时间:2011-04-19 cnblogs bjzhanghao有了这个RowMoveHandle,只要把它代替原来缺省的MoveHandle加到HeaderColumnCell上 即可,具体的方法就是覆盖DragRowEditPolicy的createSelectionHandles()方法, ResizableEditPolicy对这个方法的缺省实现是加一个黑框和八个控制点,而我们要改成下面 这样:
代码里用到的RowResizeHandle类是控制点的自定义实现,在下面很快会讲到。现在,用 户可以看到整个行被选中的效果了。 图3 选中整个行 改变行的高度 改变行高度比较自然的方式是让用户选中行后自由拖动下面的边。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |