当前位置:首页 > Java

如何用java画图

2026-01-16 15:55:24Java

使用 Java 绘图基础

Java 提供了多种绘图方式,主要通过 java.awtjavax.swing 包中的类实现。以下是几种常见的绘图方法。

使用 Graphics 类绘图

Graphics 类是 Java AWT 中用于绘图的核心类,可以绘制线条、形状、文本等。

如何用java画图

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.drawLine(10, 10, 100, 100); // 画一条线
        g.setColor(Color.BLUE);
        g.drawRect(50, 50, 100, 80);  // 画矩形
        g.fillOval(150, 150, 80, 80); // 填充椭圆
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Simple Drawing");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.add(new SimpleDrawing());
        frame.setVisible(true);
    }
}

使用 Graphics2D 增强绘图功能

Graphics2DGraphics 的子类,提供了更高级的绘图功能,如旋转、缩放和渐变填充。

import javax.swing.*;
import java.awt.*;

public class Graphics2DDemo extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.GREEN);
        g2d.setStroke(new BasicStroke(5)); // 设置线条宽度
        g2d.draw(new Rectangle(50, 50, 150, 100));

        GradientPaint gradient = new GradientPaint(100, 100, Color.RED, 200, 200, Color.YELLOW);
        g2d.setPaint(gradient);
        g2d.fill(new Ellipse2D.Double(100, 100, 150, 150));
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Graphics2D Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
        frame.add(new Graphics2DDemo());
        frame.setVisible(true);
    }
}

使用 BufferedImage 进行离屏绘图

BufferedImage 允许在内存中创建图像并进行操作,适合复杂绘图或图像处理。

如何用java画图

import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;

public class BufferedImageDemo extends JPanel {
    private BufferedImage image;

    public BufferedImageDemo() {
        image = new BufferedImage(200, 200, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2d = image.createGraphics();
        g2d.setColor(Color.WHITE);
        g2d.fillRect(0, 0, 200, 200);
        g2d.setColor(Color.BLUE);
        g2d.drawString("Hello, Java!", 50, 100);
        g2d.dispose();
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 50, 50, this);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("BufferedImage Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.add(new BufferedImageDemo());
        frame.setVisible(true);
    }
}

使用 JavaFX 绘图

JavaFX 提供了更现代的绘图 API,适合创建复杂的图形和动画。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class JavaFXDrawing extends Application {
    @Override
    public void start(Stage primaryStage) {
        Pane pane = new Pane();
        Line line = new Line(10, 10, 100, 100);
        line.setStroke(Color.RED);
        pane.getChildren().add(line);

        Rectangle rect = new Rectangle(50, 50, 100, 80);
        rect.setFill(Color.BLUE);
        pane.getChildren().add(rect);

        Circle circle = new Circle(150, 150, 40);
        circle.setFill(Color.GREEN);
        pane.getChildren().add(circle);

        Scene scene = new Scene(pane, 300, 300);
        primaryStage.setTitle("JavaFX Drawing");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

绘图库和工具

对于更复杂的绘图需求,可以使用第三方库如 JFreeChart(图表绘制)或 Processing(创意编程)。

// 使用 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 JFreeChartDemo extends JFrame {
    public JFreeChartDemo() {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        dataset.addValue(10, "Series 1", "Category 1");
        dataset.addValue(20, "Series 1", "Category 2");
        dataset.addValue(30, "Series 1", "Category 3");

        JFreeChart chart = ChartFactory.createBarChart(
                "Bar Chart Demo", "Category", "Value", dataset);
        ChartPanel panel = new ChartPanel(chart);
        setContentPane(panel);
    }

    public static void main(String[] args) {
        JFreeChartDemo demo = new JFreeChartDemo();
        demo.setSize(500, 400);
        demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        demo.setVisible(true);
    }
}

以上方法涵盖了从基础到高级的 Java 绘图技术,适用于不同的需求和场景。

标签: 画图如何用
分享给朋友:

相关文章

react如何用echarts

react如何用echarts

在React中使用ECharts 安装ECharts和React专用封装库: npm install echarts echarts-for-react 基础使用示例 创建一个基础的柱状图组件:…

如何用css制作网页

如何用css制作网页

使用CSS制作网页的基本方法 CSS(层叠样式表)用于控制网页的样式和布局。以下是通过CSS设计和美化网页的核心方法: 链接CSS文件 在HTML文件的<head>部分添加外部CSS文件…

react如何画图片

react如何画图片

在 React 中渲染图片的方法 使用 img 标签直接引入图片 将图片文件放入项目目录(如 public 或 src/assets),通过相对路径或绝对路径引用: import React fro…

如何用react写轮播

如何用react写轮播

使用React实现轮播组件 基本结构 创建一个基础的轮播组件需要管理当前显示的幻灯片索引和切换逻辑。使用useState来跟踪当前激活的幻灯片。 import React, { useState }…

如何用react构建用户界面

如何用react构建用户界面

安装 React 环境 使用 Create React App 快速搭建项目环境,运行以下命令: npx create-react-app my-app cd my-app npm start…

如何用ts重构react项目

如何用ts重构react项目

使用 TypeScript 重构 React 项目的步骤 安装 TypeScript 及相关依赖 在项目中安装 TypeScript 和 React 的类型定义文件: npm install -…