2
JUNG의 DAGLayout 알고리즘을 사용하여 몇 가지 문제가 발생하여 레이아웃 좌표를 내 자신의 데이터 구조로 다시 읽습니다.JUNG 레이아웃 변환을 올바르게 사용하는 방법은 무엇입니까?
Node
및 Edge
의 목록을 가진 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)로 갖습니다.
왜 이런 식으로 작동하지 않으며 어떻게 수정합니까?
감사합니다, 즉 그것을 해결. 렌더링은 지정된 크기가 필요하지 않지만 변압기는 그렇게하는 것으로 생각하지 않았습니다. –
IIRC에서는 렌더링 코드가 제공하지 않으므로 렌더링에서 크기를 지정하지 않아도됩니다. 레이아웃은 작업해야하는 캔버스의 크기를 알기 전까지는 초기화 할 수 없습니다. –