当前位置: 首页 > article >正文

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方法用于绘制图形。此外,我们还需要添加鼠标监听器来捕捉用户的鼠标动作。

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实例。

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必备面试-热点-热门问题精华核心总结-推荐
 往期文章大全……
在这里插入图片描述

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

更多内容,点这里❤


http://www.kler.cn/a/464509.html

相关文章:

  • 音视频入门基础:MPEG2-PS专题(4)——FFmpeg源码中,判断某文件是否为PS文件的实现
  • RK3588+FPGA全国产异步LED显示屏控制卡/屏幕拼接解决方案
  • 【模型】Qwen2-VL 服务端UI
  • 简单使用linux
  • vue2实现excel文件预览
  • Go 语言 API 限流实战:保障系统稳定性的护盾
  • 第二十五天 项目实践:图像分类
  • python学习笔记—12—
  • 设计模式 创建型 原型模式(Prototype Pattern)与 常见技术框架应用 解析
  • 闪测仪在医用人造骨骼尺寸检测中的革新应用——从2D到3D的全面升级
  • C语言中的隐式转换问题
  • 王老吉药业SRM系统上线 携手隆道共启战略合作新篇章
  • 【优选算法】查找总价格为目标值的两个商品(双指针)
  • Java-数据结构-包装类与泛型
  • YOLO11改进 | 卷积模块 | ECCV2024 小波卷积
  • 英文字体:创意前卫杀手级标题海报封面设计粗体字体 Morne Display
  • swiftui中struct该如何使用?可选字段怎么定义?使用Alamofire发送请求接收responseDecodable相应解析
  • 远场P2P穿越
  • Facebook元宇宙项目中的智能合约应用:提升虚拟空间的自治能力
  • 《探秘计算机视觉与深度学习:开启智能视觉新时代》
  • HTML——30.视频引入
  • Spring Boot 中的 classpath详解
  • 专业高程转换工具 | 海拔高度与椭球高度在线转换系统
  • PHP框架+gatewayworker实现在线1对1聊天--发送消息(6)
  • Elasticsearch:当混合搜索真正发挥作用时
  • 选择器(结构伪类选择器,伪元素选择器),PxCook软件,盒子模型