我正在使用Prefuse-library来布局JavaFX应用程序中的节点(根本没有Swing),并且我对RadialTreeLayout尤其感兴趣。
我的问题是,我的节点不是简单的圆形,而是在左侧或右侧的旁边也有一个标签(取决于节点在父级的哪一侧)。因此,节点的文本有时会重叠。
跳过Prefuse的RadialTreeLayout.java的源代码,看来布局可能很聪明,可以考虑可变大小的节点。我可能不正确,因为我不了解算法,但是Javadoc说:
“ ...考虑节点直径以改善空间分配 用于可变大小的节点。”
但是我想我什至不需要可变大小的节点,我只需要给它们一个固定的自定义大小,至少在开始时是这样。
下面是我的实际问题:如何将宽度/高度作为参数传递给布局算法?我很确定这是通过Node.setXXX方法完成的,但是我不知道正确的按键/调用/语法。
我有一个用节点填充的图对象:
Table nodeData = new Table();
nodeData.addColumn("data", NodeData.class);
Table edgeData = new Table(0, 1);
edgeData.addColumn(Graph.DEFAULT_SOURCE_KEY, int.class);
edgeData.addColumn(Graph.DEFAULT_TARGET_KEY, int.class);
Graph graph = new Graph(nodeData, edgeData, false);
Node n1 = graph.addNode();
NodeData data = new NodeData(); // My own "data"-class
data.title = "Root Node";
n1.set("data", data);
我(显然)也具有启动RadialTreeLayout的简单布局代码,完成后,将边界传递给JavaFX节点。