在Canvas Java SWT Draw2d上显示分层树结构

时间:2014-07-28 10:27:39

标签: java user-interface canvas swt draw2d

我有一个存储信息的树数据结构。我如何计算每个节点的正确位置,即树上x,y位置在画布上的位置,以便没有任何重叠,所有兄弟节点都在同一级别?我的尝试都没有实现。非常感谢你。 我想到了这样的东西,要在画布上显示。

      A
     / \
    B   C
  / | \  \
 D  E  F  G
           \
           H

2 个答案:

答案 0 :(得分:2)

您可以简单地使用已经实现多种布局算法的库,而不是重新发明轮子。

Zest似乎是最好的选择。

Here你可以找到一篇关于它的精彩文章,尤其是关于布局管理员的this部分应该帮助你(TreeLayoutAlgorithm)。

答案 1 :(得分:0)

如果您的树实现是可靠的,那么您应该能够知道节点有多少个子节点。基于此,您可以在绘制时计算兄弟姐妹之间的间距。发布一个绘图示例对于这个答案来说太过分了。

首先,尝试使用小树结构,就像你问题中的那个。如果可行,请将其设为N树节点和级别的通用。之后您可以调整图纸中的间距。