标签: java user-interface canvas swt draw2d
我有一个存储信息的树数据结构。我如何计算每个节点的正确位置,即树上x,y位置在画布上的位置,以便没有任何重叠,所有兄弟节点都在同一级别?我的尝试都没有实现。非常感谢你。 我想到了这样的东西,要在画布上显示。
A / \ B C / | \ \ D E F G \ H
答案 0 :(得分:2)
您可以简单地使用已经实现多种布局算法的库,而不是重新发明轮子。
Zest似乎是最好的选择。
Here你可以找到一篇关于它的精彩文章,尤其是关于布局管理员的this部分应该帮助你(TreeLayoutAlgorithm)。
TreeLayoutAlgorithm
答案 1 :(得分:0)
如果您的树实现是可靠的,那么您应该能够知道节点有多少个子节点。基于此,您可以在绘制时计算兄弟姐妹之间的间距。发布一个绘图示例对于这个答案来说太过分了。
首先,尝试使用小树结构,就像你问题中的那个。如果可行,请将其设为N树节点和级别的通用。之后您可以调整图纸中的间距。