use*_*915 5 java graphing jgrapht
我已经实现了这个图:
ListenableDirectedWeightedGraph<String, MyWeightedEdge> g =
new ListenableDirectedWeightedGraph<String, MyWeightedEdge>(MyWeightedEdge.class);
Run Code Online (Sandbox Code Playgroud)
为了表明班级名称的内容; 一个简单的可听的定向加权图.我想改变边缘的标签而不是格式
return "(" + source + " : " + target + ")";
Run Code Online (Sandbox Code Playgroud)
我希望它能显示边缘的重量.我意识到节点上的所有动作,例如getEdgesWeight()方法,都是从图形而不是边缘委托的.如何显示边缘的重量?我是否必须以某种方式将图表传递到边缘?
任何帮助表示赞赏.
我假设类 MyWeightedEdge 已经包含一个方法,例如
public void setWeight(double weight)
Run Code Online (Sandbox Code Playgroud)
如果确实是这样,那么你需要做的是:
从ListenableDirectedWeightedGraph派生您自己的子类(例如ListenableDirectedWeightedGraph)。我将添加两个构造函数版本,委托给“super”以确保与原始类的兼容性。
按照您的问题创建图表,但使用新类
ListenableDirectedWeightedGraph g =
new CustomListenableDirectedWeightedGraph(
MyWeightedEdge.class);
Run Code Online (Sandbox Code Playgroud)
重写setEdgeWeight方法,如下所示:
public void setEdgeWeight(E e, double weight) {
super.setEdgeWeight(e, weight);
((MyWeightedEdge)e).setWeight(weight);
}
Run Code Online (Sandbox Code Playgroud)
最后但并非最不重要的一点是,重写MyWeightedEdge类的toString方法以返回您希望边缘具有的标签(大概包括现在可用的权重)。
我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
3572 次 |
| 最近记录: |