java 如何绘图工具
Java 绘图工具概述
Java 提供了多种绘图工具和库,可用于创建图形界面、绘制2D/3D图形或处理图像。常见的工具包括内置的 java.awt 和 javax.swing,以及第三方库如 JavaFX 和 JFreeChart。
使用 java.awt 和 javax.swing 绘图
java.awt.Graphics 是基础的绘图类,通常与 JPanel 或 JFrame 结合使用。

import javax.swing.*;
import java.awt.*;
public class BasicDrawing extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.drawRect(50, 50, 100, 100); // 绘制矩形
g.fillOval(200, 200, 50, 50); // 填充圆形
}
public static void main(String[] args) {
JFrame frame = new JFrame("Basic Drawing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new BasicDrawing());
frame.setSize(400, 400);
frame.setVisible(true);
}
}
使用 JavaFX 绘图
JavaFX 是 Java 的现代图形库,支持更丰富的图形和动画功能。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
public class JavaFXDrawing extends Application {
@Override
public void start(Stage stage) {
Pane pane = new Pane();
Circle circle = new Circle(100, 100, 50);
Line line = new Line(50, 50, 200, 200);
pane.getChildren().addAll(circle, line);
Scene scene = new Scene(pane, 300, 300);
stage.setScene(scene);
stage.setTitle("JavaFX Drawing");
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
使用 JFreeChart 绘制图表
JFreeChart 是流行的第三方库,适用于生成统计图表(如折线图、柱状图)。

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
public class ChartExample {
public static void main(String[] args) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(200, "Sales", "Jan");
dataset.addValue(300, "Sales", "Feb");
JFreeChart chart = ChartFactory.createLineChart(
"Monthly Sales", "Month", "Amount", dataset
);
ChartFrame frame = new ChartFrame("Chart Example", chart);
frame.pack();
frame.setVisible(true);
}
}
使用 BufferedImage 处理图像
java.awt.image.BufferedImage 可用于图像处理和像素级操作。
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
public class ImageProcessing {
public static void main(String[] args) {
BufferedImage image = new BufferedImage(300, 300, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.setColor(Color.BLUE);
g.fillRect(0, 0, 300, 300);
JLabel label = new JLabel(new ImageIcon(image));
JFrame frame = new JFrame("Image Example");
frame.add(label);
frame.pack();
frame.setVisible(true);
}
}
第三方库推荐
- Processing:简化图形和动画的库,适合创意编程。
- Apache Batik:用于处理 SVG 矢量图形。
- LibGDX:跨平台的游戏开发框架,支持2D/3D绘图。
根据需求选择合适的工具:
- 简单图形:
java.awt/JavaFX - 数据可视化:
JFreeChart - 游戏开发:
LibGDX - 图像处理:
BufferedImage






