如何用java作图
使用Java作图的方法
Java提供了多种方式进行图形绘制,包括使用内置库如java.awt和javax.swing,以及第三方库如JFreeChart和JavaFX。以下是几种常见的方法:
使用java.awt和javax.swing绘制基本图形
通过继承JPanel并重写paintComponent方法,可以在Swing应用程序中绘制图形。以下是一个简单的示例:
import javax.swing.*;
import java.awt.*;
public class SimpleDrawing extends JPanel {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.drawRect(50, 50, 100, 100); // 绘制矩形
g.setColor(Color.BLUE);
g.fillOval(200, 50, 100, 100); // 绘制填充的圆形
}
public static void main(String[] args) {
JFrame frame = new JFrame("Simple Drawing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new SimpleDrawing());
frame.setSize(400, 300);
frame.setVisible(true);
}
}
使用JFreeChart创建图表
JFreeChart是一个流行的第三方库,用于生成各种类型的图表。以下是一个生成柱状图的示例:
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
public class BarChartExample {
public static void main(String[] args) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(200, "Sales", "Q1");
dataset.addValue(300, "Sales", "Q2");
dataset.addValue(400, "Sales", "Q3");
JFreeChart chart = ChartFactory.createBarChart(
"Sales Report", "Quarter", "Amount", dataset);
JFrame frame = new JFrame("Bar Chart");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new ChartPanel(chart));
frame.pack();
frame.setVisible(true);
}
}
使用JavaFX绘制图形
JavaFX提供了更现代的图形绘制功能。以下是一个使用JavaFX绘制折线图的示例:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;
public class LineChartExample extends Application {
@Override
public void start(Stage stage) {
NumberAxis xAxis = new NumberAxis();
NumberAxis yAxis = new NumberAxis();
LineChart<Number, Number> lineChart = new LineChart<>(xAxis, yAxis);
XYChart.Series<Number, Number> series = new XYChart.Series<>();
series.getData().add(new XYChart.Data<>(1, 20));
series.getData().add(new XYChart.Data<>(2, 30));
series.getData().add(new XYChart.Data<>(3, 40));
lineChart.getData().add(series);
Scene scene = new Scene(lineChart, 600, 400);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
使用BufferedImage生成图像文件
如果需要将图形保存为文件,可以使用BufferedImage和Graphics2D:

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class SaveImageExample {
public static void main(String[] args) throws Exception {
BufferedImage image = new BufferedImage(400, 300, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, 400, 300);
g.setColor(Color.GREEN);
g.drawString("Hello, Java Graphics!", 100, 150);
ImageIO.write(image, "png", new File("output.png"));
}
}
选择适合的方法
- 简单图形:使用
java.awt和javax.swing绘制基本图形。 - 复杂图表:使用
JFreeChart或JavaFX生成专业图表。 - 图像文件:使用
BufferedImage生成并保存图像文件。
根据需求选择合适的工具,可以高效地完成图形绘制任务。






