JAVA创建绘图板JAVA构建主窗口鼠标拖动来绘制线条

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,

忍不住分享一下给大家。点击跳转到网站

学习总结

1、掌握 JAVA入门到进阶知识(持续写作中......)

2、学会Oracle数据库入门到入土用法(创作中......)

3、手把手教你开发炫酷的vbs脚本制作(完善中......)

4、牛逼哄哄的 IDEA编程利器技巧(编写中......)

5、面经吐血整理的 面试技巧(更新中......)

使用Java实现简单的画图功能

在本篇博客中,我们将介绍如何使用Java语言创建一个简单的图形用户界面(GUI)应用程序,该程序允许用户通过鼠标绘制基本图形。我们将使用Swing库来构建用户界面,并处理鼠标事件以实现绘图功能。

项目设置

首先,确保你的开发环境中已经安装了Java Development Kit (JDK)。如果你还没有安装JDK,可以从Oracle官网下载并按照说明进行安装。接下来,你可以使用任何IDE(如IntelliJ IDEA, Eclipse, 或者NetBeans)来编写代码,或者选择使用文本编辑器和命令行工具。

创建绘图板

我们开始创建一个名为DrawingBoard的类,它将扩展JPanel并重写paintComponent方法用于绘制图形。此外,我们还需要添加鼠标监听器来捕捉用户的鼠标动作。

java 复制代码
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class DrawingBoard extends JPanel {
    private static final int WIDTH = 800;
    private static final int HEIGHT = 600;
    private Image image;
    private Graphics2D graphics2D;
    private int currentX, currentY, oldX, oldY;

    public DrawingBoard() {
        setPreferredSize(new Dimension(WIDTH, HEIGHT));
        setBackground(Color.WHITE);
        setDoubleBuffered(false);
        addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                oldX = e.getX();
                oldY = e.getY();
            }
        });

        addMouseMotionListener(new MouseAdapter() {
            public void mouseDragged(MouseEvent e) {
                currentX = e.getX();
                currentY = e.getY();
                if (graphics2D != null) {
                    graphics2D.drawLine(oldX, oldY, currentX, currentY);
                    repaint();
                    oldX = currentX;
                    oldY = currentY;
                }
            }
        });
    }

    @Override
    protected void paintComponent(Graphics g) {
        if (image == null) {
            image = createImage(getSize().width, getSize().height);
            graphics2D = (Graphics2D) image.getGraphics();
            graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            clear();
        }
        g.drawImage(image, 0, 0, null);
    }

    public void clear() {
        graphics2D.setPaint(Color.white);
        graphics2D.fillRect(0, 0, getWidth(), getHeight());
        graphics2D.setPaint(Color.black);
        repaint();
    }
}
构建主窗口

现在,我们需要创建一个主窗口来容纳我们的DrawingBoard组件。我们将使用JFrame作为主容器,并向其中添加DrawingBoard实例。

java 复制代码
import javax.swing.*;

public class Main {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("Simple Drawing Board");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add(new DrawingBoard());
            frame.pack();
            frame.setLocationRelativeTo(null); // Center the window
            frame.setVisible(true);
        });
    }
}
运行程序

完成上述步骤后,你可以运行Main类中的main方法来启动应用程序。你应该会看到一个窗口弹出,你可以在其中用鼠标拖动来绘制线条。

扩展功能

为了使绘图板更加实用,我们可以考虑添加以下特性:

  • 支持多种颜色和线宽的选择。
  • 提供橡皮擦功能。
  • 添加撤销/重做功能。
  • 允许保存和加载绘图。

这些功能可以通过引入额外的组件(如按钮、菜单等)和状态管理逻辑来实现。随着项目的复杂度增加,你可能需要考虑使用MVC(Model-View-Controller)设计模式来组织代码结构,从而提高可维护性和扩展性。

结语

通过这篇文章,我们了解了如何使用Java Swing库创建一个简单的绘图应用程序。尽管这个示例相对基础,但它为更复杂的图形应用提供了一个良好的起点。希望这篇博客能激发你探索更多关于Java GUI编程的知识。

往期文章

 第一章:日常_JAVA_面试题集(含答案)
 第二章:日常_JAVA_面试题集(含答案)

平安壹钱包JAVA面试官:请你说一下Mybatis的实现原理

Java必备面试-热点-热门问题精华核心总结-推荐
 往期文章大全......

一键三连 ~一键三连~ 一键三连~

更多内容,点这里❤

相关推荐
Minner-Scrapy2 分钟前
DApp 开发入门指南
开发语言·python·web app
计算机小白一个21 分钟前
蓝桥杯 Java B 组之岛屿数量、二叉树路径和(区分DFS与回溯)
java·数据结构·算法·蓝桥杯
孤雪心殇23 分钟前
简单易懂,解析Go语言中的Map
开发语言·数据结构·后端·golang·go
庸俗今天不摸鱼35 分钟前
Canvas进阶-4、边界检测(流光,鼠标拖尾)
开发语言·前端·javascript·计算机外设
菠菠萝宝35 分钟前
【Java八股文】10-数据结构与算法面试篇
java·开发语言·面试·红黑树·跳表·排序·lru
奔跑吧邓邓子38 分钟前
【Python爬虫(36)】深挖多进程爬虫性能优化:从通信到负载均衡
开发语言·爬虫·python·性能优化·负载均衡·多进程
不会Hello World的小苗42 分钟前
Java——链表(LinkedList)
java·开发语言·链表
lsx2024061 小时前
Perl 面向对象编程指南
开发语言
Allen Bright1 小时前
【Java基础-46.3】Java泛型通配符详解:解锁类型安全的灵活编程
java·开发语言
柃歌1 小时前
【UCB CS 61B SP24】Lecture 7 - Lists 4: Arrays and Lists学习笔记
java·数据结构·笔记·学习·算法