2011-11-09 6 views
2

JUNGのDAGLayoutアルゴリズムを使用していくつかの問題が発生し、その後レイアウトデータを自分のデータ構造に再度読み込みました。JUNGレイアウト変換の使い方は?

NodeEdgeのリストを持つNetworkクラスがあります。これをJUNGデータ構造に変換するには、DirectedSparseMultigraphオブジェクトを作成し、エッジを追加します。 e.getSrc()およびe.getDest()ノードオブジェクトを返します。

DirectedSparseMultigraph<Node, Edge> graph; 
for (Edge e : net.getEdges()) { 
    graph.addEdge(e, e.getSrc(), e.getDest()); 
} 

次に、レイアウトアルゴリズムを適用します。

Layout<Node, Point2D> layout; 
layout = new DAGLayout(graph); 

その後、頂点座標を取得するためにレイアウトを使用します。

for (Node node : net.getNodes()) { 
    Point2D coord = layout.transform(node); 
    node.setPos((float)coord.getX(), (float)coord.getY()); 
} 

Nodeオブジェクトは常に(0,0)を(x、y)とします。

なぜこの方法ではうまくいかないのですが、どうすれば修正できますか?

答えて

2

私はJUNGとあまり慣れていないんだけど、私はあなたが最初の例では、レイアウトのサイズを指定する必要が思う:

layout.setSize(new Dimension(800,600)); 
+0

おかげで、それはそれを解決しました。レンダリングが指定されたサイズを必要としないので、トランスフォーマーがそうするように思われるので、それを考えないでください。 –

+1

IIRCでは、レンダリングコードでサイズを指定する必要はありません。配置はキャンバスのサイズを知っていなければ初期化できません。 –

関連する問題