2010-07-20 21 views
6

Biraz grafik görselleştirici sınıfını yazdı:Vertex etiket

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);     
} 

nasıl köşeler ve kenarlar için etiket ekleyebilirler? Değerler benim özel verteks sınıfımda saklanır. Layout veya BasicVisualizationServer'daki tüm köşelerde yineleyebilir ve etiketler ekleyebilir miyim?

Yardımlarınız için teşekkürler!

cevap

8

Sen köşe/kenar için etiket trafo çağırmanız gerekir:

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

Bu örneklerde çok sık bulacağını şeydir. Etiketi belirtmek için verteks sınıfınızın toString() yöntemini kullanır.

Biraz daha karmaşık bir örnek: Sen kenarları boyunca yineleme gerekmez

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

; EdgeLabelTransformer veya VertexLabelTransformer, kenarlarınızda özellikleri güncellendiğinde ve etiketlendiğinde ve VisualizationViewer bunları anında güncelleyecektir.

İlgili konular