如何计算图形的大小,包括GEF中的所有子图(具有单独的编辑部分)?

时间:2012-09-11 13:03:29

标签: eclipse-gef draw2d

我试图绘制包含单个实体的图表,该实体内部包含多个元素。

我的MVC结构看起来像这样:
模型:包含EntityModel.java和ElementModel.java,它们代表我的模型对象。
查看: EntityFigure.java和ElementFigure.java
控制器: EntityEditPart.java和ElementEditPart.java

我在EntityEditPart.java中覆盖getModelChildren()以返回ElementModel.java的列表,这就是GEF如何知道元素"属于"到实体。

由于我想计算我的实体的数字大小并在此计算中包含嵌入的元素,因此在EntityEditPart.java中的createFigure()期间我无法调用entityFigure.getPreferredSize(),因为此时 - 元素数字不存在(ElementEditPart.java中的createFigure()尚未调用)。

在创建所有子图之后,我正在寻找一个设置实体图形的地方。
我虽然在ElementEditPart.java中重写了addNotify(),但是在创建特定内部元素之后调用它,而不是在创建所有元素之后调用它。

有什么想法吗?

希望我足够清楚......

1 个答案:

答案 0 :(得分:2)

您可以在

的扩展名中执行此操作
 refreshChildren()

编辑部分的方法,因为所有子创建都是在超类(AbstractEditPart)刷新方法的refreshChildren()中完成的:

public void refresh() {
    refreshVisuals();
    refreshChildren();
}

或者,你可以扩展

refresh()