Java JUNG:按顺序放置树节点
将节点添加到我的Java JUNG:按顺序放置树节点,java,tree,visualization,jung,Java,Tree,Visualization,Jung,将节点添加到我的DelegateTree时,它们不会按照我添加它们的顺序显示。 我一直在寻找解决办法,但还没有找到任何办法。 有人知道如何改变这一点吗 提前谢谢 编辑:我的代码 /** * Generate a visualization of the decision tree. * * @param tree * The decision tree * @return A component to be placed inside a JPanel */
DelegateTree
时,它们不会按照我添加它们的顺序显示。
我一直在寻找解决办法,但还没有找到任何办法。
有人知道如何改变这一点吗
提前谢谢
编辑:我的代码
/**
* 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);
}
}
/**
*生成决策树的可视化。
*
*@param树
*决策树
*@返回要放置在JPanel中的组件
*/
公共静态图形ZoomScrollPane generateTree(树,
图形用户界面(gui){
/*创建一棵新树*/
DelegateTree graphTree=新的DelegateTree();
/*将所有节点和顶点添加到树中*/
addVertex(tree.getRoot());
addChildren(tree.getRoot(),graphTree);
/*创建可视化*/
DynamicTreeLayout=新的DynamicTreeLayout(图形树,100100);
VisualizationViewer vv=新建VisualizationViewer(
treeLayout);
vv.setDoubleBuffered(真);
vv.立根地面(颜色:白色);
vv.getRenderContext().setEdgeLabelTransformer(
新ToStringLabeller());
vv.getRenderContext().setEdgeShapeTransformer(
新EdgeShape.Line());
vv.getRenderContext().setVertexLabelTransformer(
新ToStringLabeller());
vv.getRenderer().getVertexLabelRenderer()
.setPosition(Renderer.VertexLabel.Position.S);
addGraphMouseListener(新的ClickNode(gui,vv));
final DefaultModalGraphMouse graphMouse=新的DefaultModalGraphMouse();
graphMouse.setMode(ModalGraphMouse.Mode.TRANSFORMING);
vv.setGraphMouse(graphMouse);
最终图形ZoomScrollPane gzsp=新图形ZoomScrollPane(vv);
返回gzsp;
}
/**
*递归地将所有节点和边添加到树中。
*
*@param节点
*父节点
*@param树
*树可视化
*/
私有静态void addChildren(节点节点、DelegateTree树){
for(int i=0;i
为DelegateTree使用底层实现,该实现可以根据顶点的自然顺序(*排序*图)对顶点进行排序,也可以使用插入顺序(*排序*图)。为DelegateTree使用底层实现,该实现可以根据顶点的自然顺序(*排序*图)对顶点进行排序或者使用插入顺序(*Ordered*Graph)。看看DelegateTree javadocs。您需要在构造函数中输入一个参数,该参数传入您要委托的(定向)图形实例。dylan202:您是如何做到这一点的?请您发布您的代码好吗?好的,我自己这样做:私有林my_graph_model=new DelegateForest(new DirectedOrderedSparMultigraph());看看DelegateTreeJavadocs。您需要在构造函数中输入一个参数,该参数传入您要委托的(定向)图形实例。dylan202:您是如何做到这一点的?请您发布您的代码好吗?好的,我自己这样做:私有林my_graph_model=new DelegateForest(new DirectedOrderedSparMultigraph());