2010-07-20 21 views
6

Tôi đã viết một ít lớp đồ thị visualizer:Vertex nhãn trong JUNG đồ thị trực quan

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

Làm thế nào tôi có thể thêm nhãn cho các đỉnh và các cạnh? Các giá trị được lưu trữ trong lớp đỉnh tùy chỉnh của tôi. Tôi có thể lặp qua tất cả các đỉnh trong Bố cục hoặc BasicVisualizationServer và thêm nhãn không?

Cảm ơn sự giúp đỡ của bạn!

Trả lời

8

Bạn cần phải gọi một máy biến áp nhãn cho đỉnh của bạn/cạnh:

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

Đây là điều mà bạn sẽ tìm thấy khá thường xuyên trong các mẫu. Nó sử dụng phương thức toString() của lớp đỉnh của bạn để xác định nhãn.

Một ví dụ hơi tham gia nhiều hơn:

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

Bạn không cần phải để lặp qua các cạnh; EdgeLabelTransformer hoặc VertexLabelTransformer sẽ gắn nhãn các cạnh của bạn và khi các thuộc tính của chúng được cập nhật, và VisualizationViewer sẽ cập nhật chúng ngay lập tức.

Các vấn đề liên quan