我正在使用库JGraphT和JGraphX。我需要生成圆形图,但现在我有矩形图。我目前有这些graphs。
除此之外,我想知道如何自定义颜色,尺寸等。不幸的是,我不理解图书馆的文档。
这是我的代码:
package graphs;
import com.mxgraph.layout.*;
import com.mxgraph.swing.*;
import org.jgrapht.*;
import org.jgrapht.ext.*;
import org.jgrapht.graph.*;
import javax.swing.*;
import java.awt.*;
public class Dibujar extends JApplet {
private static final long serialVersionUID = 1;
private static final Dimension DEFAULT_SIZE = new Dimension(1000, 820);
private JGraphXAdapter<String, DefaultEdge> jgxAdapter;
public static void main(String[] args)
{
Dibujar applet = new Dibujar();
applet.init();
JFrame frame = new JFrame();
frame.getContentPane().add(applet);
frame.setTitle("JGraphT Adapter to JGraphX Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
@Override
public void init()
{
// create a JGraphT graph
ListenableGraph<String, DefaultEdge> g =
new DefaultListenableGraph<>(new DefaultDirectedGraph<>(DefaultEdge.class));
// create a visualization using JGraph, via an adapter
jgxAdapter = new JGraphXAdapter<>(g);
setPreferredSize(DEFAULT_SIZE);
mxGraphComponent component = new mxGraphComponent(jgxAdapter);
component.setConnectable(false);
component.getGraph().setAllowDanglingEdges(false);
getContentPane().add(component);
resize(DEFAULT_SIZE);
String v1 = "v1";
String v2 = "v2";
String v3 = "v3";
String v4 = "v4";
String v5 = "v5";
String v6 = "v6";
String v7 = "v7";
String v8 = "v8";
// add some sample data (graph manipulated via JGraphX)
g.addVertex(v1);
g.addVertex(v2);
g.addVertex(v3);
g.addVertex(v4);
g.addVertex(v5);
g.addVertex(v6);
g.addVertex(v7);
g.addVertex(v8);
Object a = g.addEdge(v1, v2);
g.addEdge(v2, v3);
g.addEdge(v3, v1);
g.addEdge(v4, v3);
g.addEdge(v4, v4);
g.addEdge(v3, v8);
g.addEdge(v2, v2);
// positioning via jgraphx layouts
mxCircleLayout layout = new mxCircleLayout(jgxAdapter);
// center the circle
int radius = 250;
layout.setX0((DEFAULT_SIZE.width / 2.0) - radius);
layout.setY0((DEFAULT_SIZE.height / 2.0) - radius);
layout.setRadius(radius);
layout.setMoveCircle(true);
layout.execute(jgxAdapter.getDefaultParent());
// that's all there is to it!...
}
}