2011-11-09 1 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에서는 렌더링 코드가 제공하지 않으므로 렌더링에서 크기를 지정하지 않아도됩니다. 레이아웃은 작업해야하는 캔버스의 크기를 알기 전까지는 초기화 할 수 없습니다. –