[Eclipse]GEF入门系列(五、浅谈布局) - 编程入门网
高度,因为Label类覆盖了 Figure的getPreferedSize()方法,使得它的高度只与里面的文本有关。解决方法是构造一个 HeaderFigure,让它维护一个Label,设置列头高度时实际设置的是HeaderFigure的高度;或 者直接让HeaderFiguer继承Label并重新覆盖getPreferedSize()也可以。我在项目里使用的 是前者。
第二个问题花了我一些时间才搞定,一开始我是在CellPart的refreshVisuals()方法里手 动设置CellFigure的高度为ColumnFigure下部区域高度的三分之一,但这样很勉强,而且还 需要额外考虑spacing带来的影响。后来通过自定义Layout的方式比较圆满的解决了这个问题 ,我让ColumnFigure使用自定义的ColumnLayout,这个Layout继承自ToolbarLayout,但覆盖 了layout()方法,内容如下:
也就是说,在layout里控制列头和下部的高度分别为30和剩下的高度。但这还没有完,为 了让单元格正确的定位在表格列中,我们还要指定列下部图形(childrenFigure)的布局管 理器,因为实际上单元格都是放在这个图形里的。前面说过,Draw2D并没有提供一个像SWT中 FillLayout那样的布局管理器,所以我们要再自定义另一个layout,我暂时给它起名为 FillLayout(与SWT的FillLayout同名),还是要覆盖layout方法,如下所示(因为用了 transposer所以horizontal和vertical两种情况可以统一处理,这个transposer只在 horizontal时才起作用):
[Eclipse]GEF入门系列(五、浅谈布局)(3)时间:2011-04-19 cnblogs bjzhanghao上面这些语句的作用是将父图形的高(宽)度平均分配给每个子图形,如果是处于最后的 一位的子图形,让它占据所有剩下的空间(防止除不尽的情况留下空白)。完成了这个 FillLayout,只要让childrenFigure使用它作为布局管理器即可,下面是ColumnFigure的大 部分代码,列头图形(HeaderFigure)和列下部图形(ChildrenFigure)作为内部类存在:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |