2011-11-09 24 views
2

我有一些使用JUNG的DAGLayout算法的问题,随后再次将布局坐标读入我自己的数据结构中。如何正确使用JUNG布局转换?

我有一个Network类与列表Node s和Edge s。为了将其转换为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,渲染不需要您指定大小,因为渲染代码将提供一个,如果您不这样做。在布局知道必须使用的画布大小之前,不能初始化位置。 –