顶点标签

问题描述:

我写了一个小图形可视化工具类:顶点标签

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中的所有顶点并添加标签?

感谢您的帮助!

你需要调用一个标签变压器为您的顶点/边:

 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会立即更新它们。