Java 更改JUNG中顶点的大小/颜色

Java 更改JUNG中顶点的大小/颜色,java,graph,jung,Java,Graph,Jung,如何在Jung可视化库中更改特定顶点的大小 我正在阅读文档,但我对java不太熟悉,在网上找不到任何好的示例。显示了如何更改顶点的大小、形状和外观。我花了一些时间,但这里有一个可读的、完整注释的程序,可以更改图形中的顶点大小和颜色。享受吧 public class SimpleGraphView { public SimpleGraphView() { // Create a graph with Integer vertices and String edges

如何在Jung可视化库中更改特定顶点的大小


我正在阅读文档,但我对java不太熟悉,在网上找不到任何好的示例。

显示了如何更改顶点的大小、形状和外观。

我花了一些时间,但这里有一个可读的、完整注释的程序,可以更改图形中的顶点大小和颜色。享受吧

public class SimpleGraphView {
    public SimpleGraphView() {
        // Create a graph with Integer vertices and String edges
        Graph<Integer, String> g = new SparseGraph<Integer, String>();
        for(int i = 0; i < 5; i++) g.addVertex(i);
        g.addEdge("Edge", 1, 2);
        g.addEdge("Another Edge", 1, 4);

        // Layout implements the graph drawing logic
        Layout<Integer, String> layout = new CircleLayout<Integer, String>(g);
        layout.setSize(new Dimension(300,300));

        // VisualizationServer actually displays the graph
        BasicVisualizationServer<Integer,String> vv = new BasicVisualizationServer<Integer,String>(layout);
        vv.setPreferredSize(new Dimension(350,350)); //Sets the viewing area size

        // Transformer maps the vertex number to a vertex property
        Transformer<Integer,Paint> vertexColor = new Transformer<Integer,Paint>() {
            public Paint transform(Integer i) {
                if(i == 1) return Color.GREEN;
                return Color.RED;
            }
        };
        Transformer<Integer,Shape> vertexSize = new Transformer<Integer,Shape>(){
            public Shape transform(Integer i){
                Ellipse2D circle = new Ellipse2D.Double(-15, -15, 30, 30);
                // in this case, the vertex is twice as large
                if(i == 2) return AffineTransform.getScaleInstance(2, 2).createTransformedShape(circle);
                else return circle;
            }
        };
        vv.getRenderContext().setVertexFillPaintTransformer(vertexColor);
        vv.getRenderContext().setVertexShapeTransformer(vertexSize);

        JFrame frame = new JFrame("Simple Graph View");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(vv); 
        frame.pack();
        frame.setVisible(true);    
    }

    public static void main(String[] args) {
        new SimpleGraphView();
    }
}
public类SimpleGraphView{
公共SimpleGraphView(){
//创建具有整数顶点和字符串边的图形
图g=新SparseGraph();
对于(int i=0;i<5;i++)g.addVertex(i);
g、 附录(“边缘”,1,2);
g、 添加(“另一条边”,1,4);
//布局实现图形绘制逻辑
布局=新的环形布局(g);
布局。设置尺寸(新尺寸(300300));
//VisualizationServer实际显示图形
BasicVisualizationServer vv=新的BasicVisualizationServer(布局);
vv.setPreferredSize(新维度(350350));//设置查看区域大小
//Transformer将顶点编号映射到顶点特性
Transformer vertexColor=新变压器(){
公共绘制变换(整数i){
如果(i==1)返回Color.GREEN;
返回颜色:红色;
}
};
变压器顶点尺寸=新变压器(){
公共形状变换(整数i){
椭圆E2D圆=新的椭圆E2D.Double(-15,-15,30,30);
//在这种情况下,顶点是两倍大
如果(i==2)返回AffineTransform.getScaleInstance(2,2).createTransformedShape(圆);
否则返回圈;
}
};
vv.getRenderContext().setVertexFillPaintTransformer(vertexColor);
vv.getRenderContext().setVertexShapeTransformer(vertexSize);
JFrame=新JFrame(“简单图形视图”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(vv);
frame.pack();
frame.setVisible(true);
}
公共静态void main(字符串[]args){
新的SimpleGraphView();
}
}

我之前研究过JUNG,如果您不熟悉Java,我不推荐使用它-文档非常糟糕,而且用户库不存在。也就是说,您使用的是什么版本?如果可能的话,你能指出具体的罐子吗?代码发生了很大的变化。Allen,对于一个用户库不存在的库,我向JUNG提出了很多问题。:)如果您希望改进文档的某些特定方面,请在web论坛或jung支持列表中发布一些内容。这正是我想要的。非常感谢你!您可以在此处找到此示例的最新源代码: