2010-07-20 90 views
6

我寫了一個小圖形可視化工具類:頂點標籤

public void simpleGraph(SparseMultigraph<Vertex,SEdge> graph, String name) { 

    Layout<Vertex, SEdge> layout = new ISOMLayout(graph); 
    layout.setSize(new Dimension(800,800)); 
    BasicVisualizationServer<Vertex, SEdge> vv = new BasicVisualizationServer<Vertex, SEdge>(layout); 
    vv.setPreferredSize(new Dimension(850,850)); //Sets the viewing area size 

    JFrame frame = new JFrame(name); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().add(vv); 
    frame.pack(); 
    frame.setVisible(true);     
} 

我怎麼可以添加頂點和邊的標籤?值存儲在我的自定義頂點類中。我是否可以迭代Layout或BasicVisualizationServer中的所有頂點並添加標籤?

感謝您的幫助!

回答

8

你需要調用一個標籤變壓器爲您的頂點/邊:

 vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller()); 

這是你會發現很經常的樣本英寸它使用頂點類的toString()方法來指定標籤。

一個稍微複雜的例子:

 vv.getRenderContext().setEdgeLabelTransformer(new Transformer<MyEdge, String>() { 
      public String transform(MyEdge e) { 
       return (e.toString() + " " + e.getWeight() + "/" + e.getCapacity()); 
      } 
     }); 

你並不需要遍歷邊緣; EdgeLabelTransformer或VertexLabelTransformer會在你的邊緣的屬性被更新時標記你的邊緣,而VisualizationViewer會立即更新它們。