如何在JUNG图形可视化中使用自定义顶点标签?
我正在遵循Jung 2.0教程,其中我发现setVertexLabelTransformer()
可以用于为顶点添加标签,但据我所知这些标签无法自定义。
例如,以下代码生成三个顶点,其顶点标签为1、2、4:
import edu.uci.ics.jung.algorithms.layout.CircleLayout;
import edu.uci.ics.jung.algorithms.layout.Layout;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.graph.SparseMultigraph;
import edu.uci.ics.jung.visualization.BasicVisualizationServer;
import java.awt.Dimension;
import javax.swing.JFrame;
public class SimpleGraphView {
Graph<Integer, String> g;
public SimpleGraphView() {
g = new SparseMultigraph<Integer, String>();
g.addVertex((Integer)1);
g.addVertex((Integer)2);
g.addVertex((Integer)4);
}
public static void main(String[] args) {
SimpleGraphView sgv = new SimpleGraphView();
Layout<Integer, String> layout = new CircleLayout(sgv.g);
layout.setSize(new Dimension(800,800));
BasicVisualizationServer<Integer,String> vv =
new BasicVisualizationServer<Integer,String>(layout);
vv.setPreferredSize(new Dimension(850,850));
JFrame frame = new JFrame("Simple Graph View");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(vv);
frame.pack();
frame.setVisible(true);
}
}
如何添加类似“q0”的标签?
SparseMultigraph<V,E>
的泛型定义为SparseMultigraph<Integer,String>
,其中用于顶点的泛型V为Integer,边缘的泛型E为String,因此每个顶点的标签值都是Integer,每个边缘的标签是String。所以,如果您想使用像q1、v2等名称表示每个顶点,请使用泛型V的String,这样您就可以像这样传递一个顶点名称:“g.addVertex(“q1”);” - ecleSparseMultigraph<V, E>
中使用String
作为V
的类型解决了问题。谢谢。 - Dilini