我试图插入一个(非常)简单的图形布局算法到我的GEF编辑器。我通过简单地将calculateX()
和calculateY()
方法添加到我的NodeEditPart
s' refreshVisuals()
(图形中明显有一个XYLayout
)来实现。
它确实有效,尽管只适用于那些与另一个节点有连接的节点,它们是另一个节点的源。当我试图访问节点的约束时,所讨论的节点有一个连接,它是目标,我得到一个NullPointerException
。
我猜测这与GEF中绘制节点的顺序有关。
我也猜测没有元素解析器检查哪些元素必须首先绘制,而是元素要么按照它们出现在List
中的顺序绘制,要么通过EditPartFactory
并发绘制(然而,必须从模型中的某种有序集合中获得其输入)。
但是它到底是怎么做的呢?
在GEF中,元素按照它们出现在getModelChildren()
返回的列表中的顺序绘制(我不记得是从开始到结束还是向后,但您可以检查代码)
然而,我不明白你的问题到底是什么,所以如果你能提供更多的细节,我可能会帮助你更多。