gpt4 book ai didi

java - 在 JUNG 中更改顶点的大小/颜色

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:54 24 4
gpt4 key购买 nike

如何在 Jung Visualization Library 中更改特定顶点的大小?

我正在阅读文档,但我对 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();
}
}

关于java - 在 JUNG 中更改顶点的大小/颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8458970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com