我对JUNG和edge(顶点)标签有问题。
我的申请是基于JUNG。它需要从给定的图形中计算一些值。图形需要“手动”淹没,在该图形上我需要设置“起始值”。我正在考虑为这些值使用标签(顶点的名称,边缘的长度)。
现在,我可以绘制图形,我可以获得顶点数和边数,但我不知道如何获得标签和值。
我尝试使用边缘和顶点的自定义类,但我根本不知道如何设置标签。 这是我的代码的一部分。它取自文档。有人可以告诉我要改变什么,这样我可以在绘制图形时和之后设置标签吗?
graph = new SparseMultigraph<Number, Number>();
this.layout = new StaticLayout<Number, Number>(graph,
new Dimension(600, 600));
vv = new VisualizationViewer<Number, Number>(layout);
vv.setBackground(Color.white);
vv.getRenderContext().setVertexLabelTransformer(
MapTransformer.<Number, String>getInstance(LazyMap.<Number, String>decorate(
new HashMap<Number, String>(),
new ToStringLabeller<Number>())));
vv.getRenderContext().setEdgeLabelTransformer(
MapTransformer.<Number, String>getInstance(LazyMap.<Number, String>decorate(
new HashMap<Number, String>(),
new ToStringLabeller<Number>())));
vv.setVertexToolTipTransformer(vv.getRenderContext().getVertexLabelTransformer());
Container content = getContentPane();
final GraphZoomScrollPane panel = new GraphZoomScrollPane(vv);
content.add(panel);
Factory<Number> vertexFactory = new VertexFactory();
Factory<Number> edgeFactory = new EdgeFactory();
final EditingModalGraphMouse<Number, Number> graphMouse = new EditingModalGraphMouse<Number, Number>(
vv.getRenderContext(), vertexFactory, edgeFactory);
vv.setGraphMouse(graphMouse);
vv.addKeyListener(graphMouse.getModeKeyListener());
答案 0 :(得分:1)
您可以使用此方法在jung中为边缘设置标签。
边缘名称:您的边缘名称
vv.getRenderContext().setEdgeLabelRenderer(new Transformer() {
@Override
public String transform(String edgeName) {
String label;
//map your label to your edgeName
return label;
}
});
@Override
public String transform(String edgeName) {
String label;
//map your label to your edgeName
return label;
}
});
所以对于顶点