0

我正在尝试绘制包含单个实体的图表,其中包含多个元素。

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

我在 EntityEditPart.java 中覆盖 getModelChildren() 以返回 ElementModel.java 列表,因此 GEF 知道元素“属于”实体的方式。

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

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

有任何想法吗?

希望我足够清楚...

4

1 回答 1

2

你可以在扩展中做到这一点

 refreshChildren()

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

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

或者,您可以扩展

refresh()
于 2012-09-12T07:11:14.613 回答