题
我写了一点图表Visualizer类:
public void simpleGraph(SparseMultigraph<Vertex,SEdge> graph, String name) {
Layout<Vertex, SEdge> layout = new ISOMLayout(graph);
layout.setSize(new Dimension(800,800));
BasicVisualizationServer<Vertex, SEdge> vv = new BasicVisualizationServer<Vertex, SEdge>(layout);
vv.setPreferredSize(new Dimension(850,850)); //Sets the viewing area size
JFrame frame = new JFrame(name);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(vv);
frame.pack();
frame.setVisible(true);
}
.
如何为顶点和边缘添加标签?值存储在我的自定义顶点类中。我可以遍历布局或基础上的所有顶点或基础VISUALizationServer并添加标签吗?
谢谢你的帮助!
解决方案
您需要为顶点/边缘调用标签变压器:
vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller());
.
这是您在样本中常见的东西。它使用顶点类的ToString()方法来指定标签。
稍微涉及示例:
vv.getRenderContext().setEdgeLabelTransformer(new Transformer<MyEdge, String>() {
public String transform(MyEdge e) {
return (e.toString() + " " + e.getWeight() + "/" + e.getCapacity());
}
});
.
您不需要迭代边缘;EDGELABELTRANSFORMER或VERTEXLABELTRANSFORMER将标记为您的边缘,何时更新其属性,VisualizationViewer将在飞行中更新它们。
不隶属于 StackOverflow