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

在画布Java SWT Draw2d上显示分层树结构,java,user-interface,canvas,swt,draw2d,Java,User Interface,Canvas,Swt,Draw2d,我有一个存储信息的树数据结构。如何确定每个节点的正确位置,即画布上树的x、y位置,以便没有重叠且所有同级节点都位于同一级别?我的尝试都没有成功。非常感谢你。 我有这样的想法,要在画布上展示 A / \ B C / | \ \ D E F G \ H 如果您的树实现是可靠的,那么您应该能够知道一个节点有多少子节点。基于此,可以在绘制时计算同级之间的间距。对于这个答案来说,发布一个绘图示例未免太过分了 首先

我有一个存储信息的树数据结构。如何确定每个节点的正确位置,即画布上树的x、y位置,以便没有重叠且所有同级节点都位于同一级别?我的尝试都没有成功。非常感谢你。 我有这样的想法,要在画布上展示

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

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


首先,尝试一个小的树结构,就像你问题中的那个。如果这样做有效,则使其成为N个树节点和级别的通用。您可以在以后调整图形中的间距。

您可以使用已经实现了多种布局算法的库,而不是重新设计轮子

看来这是最好的选择


你可以找到一篇关于它的精彩文章,特别是关于布局管理器的部分应该对你有所帮助(
TreeLayoutAlgorithm
)。

谢谢你的回答:)我试图自己设计一个算法,但是没有成功,因为我所有的元素长度不同。热情似乎为我解决了这个问题。@Asher我很高兴它成功了。我以为你不想使用外部库。祝你好运!