2012-04-18 8 views
1

DelegateTreeにノードを追加すると、追加した順に視覚的に表示されません。 私は解決策を探していましたが、まだ何も見つかりませんでした。 これを変更する方法を知っている人はいますか?JUNG:ツリーノードを並べる

ありがとうございます!

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

答えて

1

は、どちらかが彼らの自然順序付け(* *グラフ順)またはその挿入の順序を使用します(*発注*グラフに応じてその頂点をソートすることをDelegateTreeのための基本となる実装を使用します)。

+0

上記のコードで何を変更する必要がありますか? – dylan202

+0

DelegateTree javadocsを見てください。コンストラクタには、委譲先の(Directed)Graphインスタンスを渡す引数が必要です。 –

+0

ご協力ありがとうございます。それは働いた:) – dylan202

関連する問題