Java使用JGraphT将图可视化成图形界面展示出来
依赖类库的Maven坐标:
<dependency>
<groupId>org.jgrapht</groupId>
<artifactId>jgrapht-core</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>org.jgrapht</groupId>
<artifactId>jgrapht-ext</artifactId>
<version>1.5.1</version>
</dependency>
类库介绍:
JGraphT是一个用于表示和操作各种类型的图结构的Java库。它支持多种类型的图,包括有向图、无向图、带权图等,并提供了一系列算法来处理这些图。JGraphT为图提供了灵活的数据结构,使得用户可以使用不同的方式存储和表示图。
实现样例的完整Java代码如下:
import org.jgrapht.Graph;
import org.jgrapht.graph.DefaultEdge;
import org.jgrapht.graph.SimpleGraph;
import org.jgrapht.nio.Attribute;
import org.jgrapht.nio.DefaultAttribute;
import org.jgrapht.nio.dot.DOTExporter;
import org.jgrapht.traverse.DepthFirstIterator;
import org.jgrapht.traverse.GraphIterator;
import javax.swing.*;
import java.awt.*;
import java.io.StringWriter;
public class GraphVisualizationExample extends JFrame {
private Graph<String, DefaultEdge> graph;
public GraphVisualizationExample() {
// 创建一个简单的无向图
graph = new SimpleGraph<>(DefaultEdge.class);
String[] vertices = {"A", "B", "C", "D", "E"};
for (String vertex : vertices) {
graph.addVertex(vertex);
}
graph.addEdge("A", "B");
graph.addEdge("B", "C");
graph.addEdge("C", "D");
graph.addEdge("D", "E");
graph.addEdge("E", "A");
// 创建一个JPanel用于显示图形界面
JPanel panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
GraphIterator<String, DefaultEdge> iterator = new DepthFirstIterator<>(graph);
while (iterator.hasNext()) {
String vertex = iterator.next();
int x = (int) (Math.random() * getWidth());
int y = (int) (Math.random() * getHeight());
g.drawString(vertex, x, y);
}
}
};
getContentPane().add(panel);
setTitle("Graph Visualization Example");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new GraphVisualizationExample();
}
}
运行代码后,会展示一个随机布局的无向图界面,顶点的坐标是随机生成的,并且顶点标签会在界面上显示出来。
总结:
本文介绍了使用JGraphT库将图形可视化的方法。首先,引入了JGraphT的Maven依赖,然后对该库进行了简要介绍。接着,通过一个完整的样例演示了如何创建一个简单的无向图,并将图形界面展示出来。最后,对整个过程进行了总结。使用JGraphT可以方便地创建和操作各种类型的图,并通过图形界面展示出来。