我试图绘制包含单个实体的图表,该实体内部包含多个元素。
我的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(),但是在创建特定内部元素之后调用它,而不是在创建所有元素之后调用它。
有什么想法吗?
希望我足够清楚......
答案 0 :(得分:2)
您可以在
的扩展名中执行此操作 refreshChildren()
编辑部分的方法,因为所有子创建都是在超类(AbstractEditPart)刷新方法的refreshChildren()中完成的:
public void refresh() {
refreshVisuals();
refreshChildren();
}
或者,你可以扩展
refresh()