2008-09-25 5 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). 원본 클래스와의 호환성을 보장하기 위해 "super"에 위임하는 두 생성자 버전을 추가합니다.

질문에서와 같이 그래프를 작성하지만, 다음과 같은 방법을 새 클래스를 setEdgeWeight

ListenableDirectedWeightedGraph g = 
    new CustomListenableDirectedWeightedGraph(
     MyWeightedEdge.class); 

오버라이드를 사용하여 :

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

을 그리고, 마지막으로는 를 오버라이드 (override) toString 클래스의 메소드 MyWeightedEdge 가장자리에 표시 할 레이블을 반환하려면 (지금 그것에 유효하다).

이 정보가 도움이되기를 바랍니다.

+0

user5915 그가 그래프를 시각화하는 데 사용한 것을 언급하지 않았지만 jgraph라고 가정합니다. 당신이 그에게 자기 자신의 도서관 O.o를 쓰라고 말하는 것과 같습니다. – Khoi