GEF/draw2d:有向图节点乱序

GEF/draw2d: DirectedGraph nodes out of order

我有一个程序,其中有一棵树。我将节点及其边放在 NodeList 和 EdgeList 中。然后将列表放入 DirectedGraph 中,然后我 运行 通过 DirectedGraphLayout.visit().

我现在将节点和边放置在屏幕上。该图几乎是完美的,但存在一些节点乱序的不一致之处。

第一个如下图所示。如您所见,它放置了 parent1 中的几个 children,然后放置了 parent2 中的一些节点。然后出于某种原因,我无法弄清楚它将 parent1 的最后一个 child 放在 parent2 的 children 的右边。

Picture

下一个问题是 parent 的 children 出问题了。当 children 应按顺序放置:1 2 3 4 时,它们会以不同的顺序放置,例如:2 3 1 4。

我尝试将节点添加到 NodeList 是不同的顺序,尝试 post 和预排序递归来解析我的树。我最终得到了完全相同的定位。

我不知道如何解决这个问题。任何有关 DirectedGraph 的工作原理以及它为什么这样放置节点的提示都值得赞赏。

来自 DirectedGraphLayout 文档,

[the layout algorithm will] assign x coordinates such that the graph is easily readable. The exact behavior is undefined

再往下

This class is not guaranteed to produce the same results for each invocation.

所以我想没有办法 "fix" 因为行为未定义。