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());