2013-05-01 169 views
-1

你好计算器社区,获取绘制树的所有节点的正确坐标

我有以下问题。可以说,我有一棵树,每个节点的可变数量的孩子(其中叶子当然有0个孩子,其他节点1基本上是无限的孩子​​)。我想用SWT来绘制这棵树。我不想知道如何用SWT来绘画,但是如何确定在哪里绘制每个节点。我最希望的是父节点集中在孩子身上,并且兄弟姐妹之间有足够的空间,这样孩子就不会相互碰撞。我的大脑不会提出一个算法来确定位置。我希望这里有人能帮忙。

在此先感谢! 干杯,帕特里克

+0

计算节点的界限,我不知道SWT但我敢打赌,它有一个Tree组件,所以你必须提供树状数据的组件,它将绘制自己。 – Pino 2013-05-01 16:41:19

+0

那么,SWT有一个树类,但它是当你被提示选择一个目录时(你的目录从上到下列出,当你点击一个子弹出来,从顶部列出再次到底)。我不知道可以绘制真实图形树的SWT组件。 – BananaBuster 2013-05-01 16:49:54

回答

-1

想想任何OS中的文件树。它确切的情况。看看http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/Swing-Tutorial-JTree.html看看如何实现一个!不确定你是否在寻找如何实施它或自己画,但我不会推荐自己画。

+0

首先,问题是SWT,而不是Swing。其次,OP特别要求图形布局,而不是文件树布局。 – Baz 2013-05-01 16:52:10

0

你可以做广度优先搜索。在每个级别上,学习级别中的节点数量,然后进行计算并绘制它们,移动到树上的下一级,依此类推。

+0

我想我会遇到使用这个问题。当绘制一个只有2个节点的级别时,它们下面的级别会突然出现1000个节点,这2个节点不会再集中在子节点上。 – BananaBuster 2013-05-01 17:00:25

+0

首先你要集中根目录,然后你在第二个层次上,因为有两个节点,你将把屏幕分成两部分并集中在子屏幕中的节点。@ patrick-szostack – 2013-05-01 17:04:08

0

我想到下面的步骤来找出绘制树的边界。

  1. 你需要知道树的叶子节点(n)的数量(正常中心父节点)
  2. 你需要知道树的深度(d)。
  3. 指定参数,如树的每个级别的垂直间距(vs),水平间距(hs)。
  4. 实施org.eclipse.swt.widgets.Layout,并在每个级别