3

私はテストにこのドットコードを使用しています:

digraph G { edge [dir=none];
p1 [shape=circle,style=filled,label="",height="0.01",width="0.01"];
q1 [shape=circle,style=filled,label="",height="0.01",width="0.01"];
q2 [shape=circle,style=filled,label="",height="0.01",width="0.01"];
q3 [shape=circle,style=filled,label="",height="0.01",width="0.01"];
{rank=same; father->p1; mother->p1};
{rank=same; q1->q2->q3};
{rank=same; son1; daughter1; daughter2};
p1->q2;
q1->son1;
q2->daughter1;
q3->daughter2;
}

グラフを作成するための私の Java コードは次のとおりです。

Graph graph = null;

    graph = program.getGraph();

    JScrollPane jsp = new JScrollPane();
    jsp.getViewport().setBackingStoreEnabled(true);

    GrappaPanel gp = new GrappaPanel(graph);
    gp.addGrappaListener(new GrappaAdapter());
    gp.setScaleToFit(false);
    jsp.setViewportView(gp);

出力はこれです:リンク

ツリーのフォーマットが間違っているのはなぜですか? そして、ツリーを左から右に表示させる可能性はありますか?

4

1 に答える 1

1

GrappaPanel に (魅力的な方法で) 表示する前に、graphviz (「dot」、「neato」などのツールのいずれか) にグラフを「フォーマット」するように「依頼」する必要があります。GrappaPanel を作成する前に、次のことを行う必要があります。

String [] processArgs = {"dot"}; // You can use "neato" or whatever formatter you want
Process formatProcess = Runtime.getRuntime().exec(processArgs, null, null);
GrappaSupport.filterGraph(graph, formatProcess);
formatProcess.getOutputStream().close();

GrappaSupport.filterGraph の「グラフ」はグラフです。その後、グラフが適切にフォーマットされ、GrappaPanel を使用して表示できるようになります。結果は、リンクに投稿したものよりも快適になります。

お役に立てば幸いです。

PS: 上記のコードを機能させるには、「ドット」(または使用するその他のフォーマッター) をパスに含める必要があります。それ以外の場合は、実行可能ファイルの完全なパスを指定する必要があります。

于 2012-05-14T01:26:00.750 に答える