当前位置:首页 > Java

java swing 如何画图

2026-03-21 10:55:32Java

使用 Java Swing 绘制图形

在 Java Swing 中,绘制图形通常通过重写 JComponentpaintComponent(Graphics g) 方法实现。Graphics 类提供了多种绘图方法,如绘制线条、矩形、圆形等。

创建自定义绘图组件

创建一个继承自 JPanel 的类,并重写 paintComponent 方法。在此方法中调用 Graphics 的绘图方法。

java swing 如何画图

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

class DrawingPanel extends JPanel {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawLine(10, 10, 100, 100); // 绘制直线
        g.drawRect(50, 50, 80, 60);   // 绘制矩形
        g.drawOval(100, 100, 50, 50); // 绘制圆形
    }
}

设置主窗口并显示

将自定义的绘图面板添加到 JFrame 中,并设置窗口属性。

public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Swing 绘图示例");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        frame.add(new DrawingPanel());
        frame.setVisible(true);
    }
}

使用 Graphics2D 增强绘图功能

Graphics2DGraphics 的子类,提供了更丰富的绘图功能,如设置线条宽度、填充颜色等。

java swing 如何画图

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;

    // 设置线条宽度和颜色
    g2d.setStroke(new BasicStroke(3));
    g2d.setColor(Color.RED);
    g2d.drawLine(10, 10, 100, 100);

    // 填充矩形
    g2d.setColor(Color.BLUE);
    g2d.fillRect(50, 50, 80, 60);
}

绘制复杂图形

通过 Path2D 类可以绘制复杂的自定义图形。

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;

    Path2D path = new Path2D.Double();
    path.moveTo(50, 50);
    path.lineTo(100, 100);
    path.lineTo(150, 50);
    path.closePath();

    g2d.draw(path);
}

处理动态绘图

如果需要动态更新图形,可以存储图形数据并调用 repaint() 方法触发重绘。

class DrawingPanel extends JPanel {
    private List<Point> points = new ArrayList<>();

    public void addPoint(Point p) {
        points.add(p);
        repaint(); // 触发重绘
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        for (Point p : points) {
            g.fillOval(p.x, p.y, 5, 5);
        }
    }
}

注意事项

  • paintComponent 方法中必须调用 super.paintComponent(g) 以确保组件正确渲染。
  • 避免在 paintComponent 中执行耗时操作,以免影响性能。
  • 使用 Graphics2D 时,可以通过 setRenderingHint 设置抗锯齿等渲染效果。

通过以上方法,可以在 Java Swing 中实现各种图形的绘制和动态更新。

标签: 画图java
分享给朋友:

相关文章

java如何生成随机数

java如何生成随机数

生成随机数的方法 在Java中生成随机数可以通过多种方式实现,以下是几种常见的方法: 使用Math.random()方法 Math.random()方法返回一个double类型的伪随机数,范围在[0…

java如何避免死锁

java如何避免死锁

避免死锁的方法 固定顺序获取锁 确保所有线程按照相同的顺序获取多个锁。例如,若需要获取锁A和锁B,所有线程必须先获取A再获取B,避免交叉依赖导致的死锁。这种方式破坏了“循环等待”条件。 使用锁超时机…

如何启用java

如何启用java

启用 Java 的方法 检查 Java 是否已安装 在命令行或终端输入 java -version,如果显示版本信息,说明 Java 已安装。若未安装,需从 Oracle 官网 或 OpenJDK 下…

java实现vue接口

java实现vue接口

Java 实现 Vue 接口的方法 在 Java 中实现 Vue 前端调用的接口,通常需要使用 Spring Boot 框架构建 RESTful API。以下是具体的实现步骤和代码示例。 创建 Sp…

vue实现java登录注册

vue实现java登录注册

实现 Vue 与 Java 后端的登录注册功能 前端 Vue 部分 安装必要的依赖(如 axios 用于 HTTP 请求): npm install axios 创建登录表单组件(Login.vue…

react如何与java配合

react如何与java配合

React 与 Java 配合的常见方式 React 作为前端框架,通常与 Java 后端通过 RESTful API 或 GraphQL 进行交互。以下是几种常见的配合方式: RESTful AP…