2008-09-25 15 views
5

मैंने इस ग्राफ को कार्यान्वित किया है:JgraphT में वजन दिखाएं

ListenableDirectedWeightedGraph<String, MyWeightedEdge> g = 
    new ListenableDirectedWeightedGraph<String, MyWeightedEdge>(MyWeightedEdge.class); 

यह दिखाने के लिए कि कक्षा का नाम क्या कहता है; एक साधारण श्रवण निर्देशित भारित ग्राफ। मैं किनारों के लेबल को बदलना चाहता हूं और प्रारूप के बजाय

return "(" + source + " : " + target + ")"; 

मैं इसे किनारे का वजन दिखाना चाहता हूं। मुझे एहसास है कि नोड्स पर सभी क्रियाएं, उदा। getEdgesWeight() विधि, ग्राफ से प्रतिनिधि हैं और किनारे पर नहीं। मैं किनारे का वजन कैसे दिखा सकता हूं? क्या मुझे ग्राफ में किनारे पर किसी भी तरह से गुजरना है?

किसी भी मदद की सराहना की है।

उत्तर

2

मुझे लगता वर्ग MyWeightedEdge पहले से ही के रूप में

public void setWeight(double weight) 

एक विधि इस तरह होता है कि अगर यह वास्तव में मामला है, तो क्या आपको बस इतना करना है:

ListenableDirectedWeightedGraph से अपने खुद के उपवर्ग प्राप्त (उदाहरण के लिए, सुनोटेबल डायरेक्टेड वेइटेडग्राफ)। मैं मूल वर्ग के साथ संगतता सुनिश्चित करने के लिए "सुपर" को प्रस्तुत करने वाले दोनों कन्स्ट्रक्टर संस्करणों को जोड़ूंगा।

अपने प्रश्न में के रूप में ग्राफ बनाएं, लेकिन नए वर्ग

ListenableDirectedWeightedGraph g = 
    new CustomListenableDirectedWeightedGraph(
     MyWeightedEdge.class); 

अवहेलना के रूप में इस विधि setEdgeWeight का उपयोग कर:

public void setEdgeWeight(E e, double weight) { 
    super.setEdgeWeight(e, weight); 
    ((MyWeightedEdge)e).setWeight(weight); 
} 

और, पिछले नहीं बल्कि कम से कम, ओवरराइड श्रेणी के लिए विधि MyWeightedEdge जिस लेबल को आप किनारे चाहते हैं उसे वापस करने के लिए (संभावित रूप से वजन सहित, अब इसके लिए उपलब्ध है)।

मुझे आशा है कि इस मदद करता है।

+0

उपयोगकर्ता5915 ने उल्लेख नहीं किया कि वह अपने ग्राफ को देखने के लिए क्या उपयोग करता था लेकिन मुझे लगता है कि यह jgraph था। ऐसा लगता है कि आप उसे अपनी पुस्तकालय ओओ लिखने के लिए कह रहे हैं – Khoi

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