首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用JUNG2绘制同一边名

如何用JUNG2绘制同一边名
EN

Stack Overflow用户
提问于 2015-05-28 00:57:22
回答 1查看 397关注 0票数 1

我正在做一个由JUNG2绘制的网络拓扑项目,现在发现JUNG2不能在不同的顶点上绘制相同的边(名)。并报告如下:

代码语言:javascript
复制
Exception in thread "main" java.lang.IllegalArgumentException: edge GigabitEthernet0/3<--->GigabitEthernet0/0/0/0 already exists in this graph with endpoints <HKBR1, HKBR3> and cannot be added with endpoints <HKBR2, HKBR4>
at edu.uci.ics.jung.graph.AbstractGraph.getValidatedEndpoints(AbstractGraph.java:93)
at edu.uci.ics.jung.graph.SparseMultigraph.addEdge(SparseMultigraph.java:123)
at edu.uci.ics.jung.graph.AbstractGraph.addEdge(AbstractGraph.java:60)
at pkg.DrawnTopology.DrawnTopology(DrawnTopology.java:45)
at pkg.ReadLine.main(ReadLine.java:85)

我把所有的边缘和顶点都存储到一个二维数组中。二维数组数据从不同的文件中学习,因此数据是动态的.由于网络拓扑结构可能有相同的边名,那么如何解决呢?

EN

回答 1

Stack Overflow用户

发布于 2015-05-28 06:35:00

从技术上讲,边名必须是唯一的,但您可以操作图形中显示的内容。为了获得边的唯一名称,我对边的名称使用了以下模式: fromVertex_edgeName_toVertex。

然后你需要一个EdgeLabelTransformer

代码语言:javascript
复制
private class EdgeLabelTransformer<V> implements Transformer<V, String> {

    @Override
    public String transform(V v) {
        return v.toString().substring(v.toString().indexOf("_") + 1, v.toString().lastIndexOf("_"));
    }
}

这个转换器实际上告诉VisualViewer要显示什么。因此,在我的例子中,它只显示中间部分,结果是您可以在图中有多个边,具有相同的显示名称。

加入这样的变压器:

代码语言:javascript
复制
visualViewer.getRenderContext().setEdgeLabelTransformer(new EdgeLabelTransformer<String>());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30495517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档