2008-09-25 30 views
5

Bu Grafiği uyguladım:JgraphT içindeki ağırlıkları göster

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

Sınıf adının ne olduğunu göstermek için; Basit bir dinlenebilir yönlendirilmiş ağırlıklı grafik. Kenarların etiketini değiştirmek istiyorum ve yerine

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

biçiminde kenarın ağırlığını göstermek istiyorum. Düğümlerdeki tüm eylemlerin, ör. getEdgesWeight() yöntemi, kenardan değil grafikten aktarılır. Kenarın ağırlığını nasıl gösterebilirim? Grafikte bir şekilde kenara geçmek zorunda mıyım?

Herhangi bir yardım için teşekkür ederiz.

cevap

2

bu şekilde olursa sınıf MyWeightedEdge zaten

public void setWeight(double weight) 

gibi bir yöntem içerdiğini varsayalım, o zaman ne yapmanız gereken ise:

ListenableDirectedWeightedGraphkendi alt sınıfını türetin (ör. ListenableDirectedWeightedGraph). Orijinal sınıfla uyumluluğu sağlamak için "süper" ye delege veren her iki kurucu sürümünü de eklerim.

sorunuzu olarak grafik oluşturun, ancak aşağıdaki gibi yöntemini yeni sınıf setEdgeWeight

ListenableDirectedWeightedGraph g = 
    new CustomListenableDirectedWeightedGraph(
     MyWeightedEdge.class); 

Geçersiz Kıl kullanarak:

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

Ve son ama en az, geçersiz kenarının sahip olmasını istediğiniz etiketi döndürmek için MyWeightedEdge sınıfının yöntemine göre (muhtemelen ağırlık dahil olmak üzere) şimdi mevcut).

Umarım bu yardımcı olur.

+0

user5915 grafiğini görselleştirmek için kullandığı şeyden bahsetmemişti ama jgraph olduğunu farz ediyorum. Sanki ona kendi kütüphanesini yazmasını söylüyorsun. – Khoi

İlgili konular