2010-07-20 4 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는 즉시 업데이트합니다.