2010-07-20 16 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);     
} 

मैं कैसे कोने और किनारों के लिए लेबल जोड़ सकते हैं? मान मेरे कस्टम वर्टेक्स वर्ग में संग्रहीत हैं। क्या मैं लेआउट या 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 आपके किनारों को लेबल करेगा जब उनके गुण अपडेट किए जाएंगे, और विजुअलाइजेशन व्यूअर उन्हें फ्लाई पर अपडेट करेगा।

संबंधित मुद्दे