5

我尝试使用权重创建 Java JGraphT 可视化,例如:

http://i.stack.imgur.com/KXRrc.png

现在我想将边缘标签(例如:(a:b)更改为其边缘权重(例如:2)。我尝试在 Javadoc 中搜索,但没有看到任何内容。请帮助我,谢谢!

4

2 回答 2

4

这些边缘标签来自toString边缘对象的方法。因此,您可以创建自己的边缘类并toString以产生边缘权重的方式覆盖该方法。

您可以像这样创建自定义边缘:

class MyWeightedEdge extends DefaultWeightedEdge {
  @Override
  public String toString() {
    return Double.toString(getWeight());
  }
}

然后像这样创建您的图表,这将使图表创建边缘作为实例,MyDefaultEdge因此在可视化中仅显示边缘权重:

SimpleWeightedGraph<String,MyWeightedEdge> graph
  = new SimpleWeightedGraph<String,MyWeightedEdge>(MyWeightedEdge.class);
于 2013-01-16T22:00:50.720 回答
0

JGraphT 是通用实现的,因此当您传递 Edge 类时,只需在各自的类中实现 toString() 方法。例如,假设“City”是我的 Vertex 类,“Path”是我的 Edge,所以在其中实现 toString() 方法

class Pathe{
  @Override
  public String toString() {
    return "Distant Between" +this.source +"this.dest" "is" + this.distance;
  }
}
于 2013-05-01T11:29:22.160 回答