将节点添加到我的DelegateTree
,它们在视觉上并不按照我添加它们的顺序出现。
我一直在寻找解决方案,但还没有找到任何东西。
有谁知道如何改变这个吗?
提前致谢!
EDIT:我的代码
/**
* Generate a visualization of the decision tree.
*
* @param tree
* The decision tree
* @return A component to be placed inside a JPanel
*/
public static GraphZoomScrollPane generateTree(Tree tree,
GraphicalUserInterface gui) {
/* Create a new tree */
DelegateTree<Node, Edge> graphTree = new DelegateTree<Node, Edge>();
/* Add all nodes and vertices to the tree */
graphTree.addVertex(tree.getRoot());
addChildren(tree.getRoot(), graphTree);
/* Create the visualization */
DynamicTreeLayout<Node, Edge> treeLayout = new DynamicTreeLayout<Node, Edge>(graphTree, 100, 100);
VisualizationViewer<Node, Edge> vv = new VisualizationViewer<Node, Edge>(
treeLayout);
vv.setDoubleBuffered(true);
vv.setBackground(Color.WHITE);
vv.getRenderContext().setEdgeLabelTransformer(
new ToStringLabeller<Edge>());
vv.getRenderContext().setEdgeShapeTransformer(
new EdgeShape.Line<Node, Edge>());
vv.getRenderContext().setVertexLabelTransformer(
new ToStringLabeller<Node>());
vv.getRenderer().getVertexLabelRenderer()
.setPosition(Renderer.VertexLabel.Position.S);
vv.addGraphMouseListener(new ClickNode(gui, vv));
final DefaultModalGraphMouse<Node, Edge> graphMouse = new DefaultModalGraphMouse<Node, Edge>();
graphMouse.setMode(ModalGraphMouse.Mode.TRANSFORMING);
vv.setGraphMouse(graphMouse);
final GraphZoomScrollPane gzsp = new GraphZoomScrollPane(vv);
return gzsp;
}
/**
* Recursively add all nodes and edges to the tree.
*
* @param node
* The parent node
* @param tree
* The tree visualization
*/
private static void addChildren(Node node, DelegateTree<Node, Edge> tree) {
for (int i = 0; i < node.getChildren().size(); i++) {
tree.addChild(new Edge(node.getChildren().get(i).getEdgeLabel()), node, node
.getChildren().get(i));
addChildren(node.getChildren().get(i), tree);
}
}
使用 DelegateTree 的底层实现,根据顶点的自然顺序 (*Sorted*Graph) 对其顶点进行排序,或者使用插入顺序 (*Ordered*Graph)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)