在JgraphT中显示权重

时间:2008-09-25 16:55:22

标签: java graphing jgrapht

我已实施此图表:

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

为了显示班级名称的内容;一个简单的可听的定向加权图。我想更改边缘的标签而不是格式

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

我希望它能显示边缘的重量。我意识到节点上的所有操作,例如getEdgesWeight()方法是从图表而不是边缘委托的。如何显示边缘的重量?我是否必须以某种方式将图表传递到边缘?

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我假设MyWeightedEdge类已经包含一个方法,如

public void setWeight(double weight)

如果情况确实如此,那么您需要做的是:

ListenableDirectedWeightedGraph (例如, ListenableDirectedWeightedGraph )派生您自己的子类。我会添加两个构造函数版本,委托给“super”以确保与原始类的兼容性。

按照问题创建图表,但使用新类

ListenableDirectedWeightedGraph g = 
    new CustomListenableDirectedWeightedGraph(
        MyWeightedEdge.class);

重写方法 setEdgeWeight ,如下所示:

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

最后但并非最不重要的是,覆盖 MyWeightedEdge 类的 toString 方法,以返回您希望边缘具有的标签(可能包括权重,即现在可用了。)

我希望这会有所帮助。