【发布时间】:2012-03-10 04:06:21
【问题描述】:
JUNG图形可视化中如何使用自定义顶点标签?
我在关注Jung 2.0 Tutorial,发现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”之类的标签?
【问题讨论】:
-
请引用您正在学习的教程。另见Initial Threads。
-
由于您已将
SparseMultigraph<V, E>的泛型定义为SparseMultigraph<Integer, String>,其中顶点的泛型V 为整数,边缘的泛型E 为字符串,因此每个顶点的标签值都是整数,每个边的字符串中的标签。因此,如果您希望每个顶点的名称为 q1、v2 等,请使用 String 作为通用 V,这样您就可以传递一个像g.addVertex("q1");这样的顶点名称 -
要更改 JUNG 渲染上下文中的默认顶点标签转换器,请搜索关键字
getRenderContext().setVertexLabelTransformer -
更多内容:stackoverflow.com/questions/3288886/…。请注意,这取决于您对顶点和边的泛型定义。如果示例不适合您,请检查示例中使用的泛型类型并根据您的进行修改。
-
@eee 在
SparseMultigraph<V, E>中将String用于V解决了这个问题。谢谢。
标签: java swing jung visualizer