GUI编程,仿Windows系统mspaint画板的伪实现
首先我们来看一下实现后的效果图
我本来画的是一个冰某dun,由于代码的实现方式还不是很高级,而且我的绘画水平有有限,画出来的样子不是很美观,后来又因为版权问题,发不出来图片,只能删掉了。
下面来看一下代码的实现过程
package com.Ltz2.paint;import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Iterator;public class PaintTest02 {public static void main(String[] args) {new MyFrameTwo("画笔绘画功能实现");}
}class MyFrameTwo extends Frame{//定义集合存储鼠标点击出来的点点ArrayList points;public MyFrameTwo(String title){//设置面板窗口的名字super.setTitle(title);//设置窗体位置setBounds(210,210,600,450);points = new ArrayList<>();this.addMouseListener(new MyMouse());//设置可见性setVisible(true);//添加窗体关闭功能addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}//重写实现画笔的方法@Overridepublic void paint(Graphics g) {//super.paint(g);//监听鼠标事件Iterator iterator = points.iterator();while (iterator.hasNext()){Point point = (Point) iterator.next(); //获取集合中的下一个元素,强制成Point类型g.setColor(Color.CYAN);//设置画笔元素的颜色g.fillOval(point.x,point.y,10,10);//设置画笔元素的坐标}}public void addPaint(Point point){points.add(point);}//实现鼠标事件的监听类private class MyMouse extends MouseAdapter{//重写适配器模式的MouseAdapter类的 鼠标按压事件方法@Overridepublic void mousePressed(MouseEvent e) {//super.mousePressed(e);MyFrameTwo f2 = (MyFrameTwo) e.getSource();f2.addPaint(new Point(e.getX(),e.getY()));//实时刷新f2.repaint();}}}
这是整个代码的实现,其实很简单。
首先需要创建容器,然后是画板和画笔的绑定,然后画笔需要鼠标的事件监听,在之后就是集合将监听鼠标事件产生的点击出来的元素进行存储。画笔从集合当中将元素读取出来。(画笔每次只画一个点点,所以还需要让鼠标没点击一次刷新重画一次即 f2.repaint()
GUI编程,仿Windows系统mspaint画板的伪实现相关推荐
- java连接as400数据库,原创:用JDBC访问AS/400数据 配置与JDBC编程要点Windows系统 -电脑资料...
发了半天了,只见鱼过,不见冒泡,正在疑惑各位大大是否对此题目不感兴趣呢?luoshengzh大大的鼓励来了,谢谢luoshengzh, 发了半天了,只见鱼过,不见冒泡,正在疑惑各位大大是否对此题目不感 ...
- 如何正确地进入基于x86-64Bit Windows系统的商业软件破解领域
[作者] 猪头三 个人网站:http://www.x86asm.com/ [序言] 从事Windows系统下的软件研发,已走过差不多9年的时光,在这段时间里认识不少朋友.在每认识一个新的朋友的时候,我 ...
- C#——《C#语言程序设计》实验报告——Windows桌面编程——简单的计算器(仿Windows 10计算器)
一.实验目的 熟悉使用WPF进行界面编程的基本过程: 掌握WPF布局.控件.事件的使用. 二.实验内容 运用WPF技术,模仿Windows 10系统中计算机器(Calculator)程序,开发一个类似 ...
- 基于.net之仿Windows画板设计
基于.net之仿Windows画板设计 队 长:周 洋 小组成员:周寅莹 袁晓旭 江春鹏 蒋彬含 朱振宇 屈生辉 万里骏 彭子航 指导老师:余敦辉 所在班级:湖北大学计算机科学与技术2016级 摘要: ...
- Windows系统编程之进程间通信
Windows系统编程之进程间通信 标 题: Windows系统编程之进程间通信 作 者: 北极星2003 时 间: 2006-05-25,14:18:36 链 接: http://bbs.pediy ...
- 新手学习【菜鸟教程】Python CGI编程的几个坑(Windows系统)
写在前面的话 作为新手,在window10系统中学习Python CGI编程,按照教程却发现无法运行,终于解决各种坑,记录在次供小白参考,也欢迎大神指正. 下面我分安装.配置和调试两部分来讲. 安装 ...
- Windows系统编译GSL2.7用于C语言编程(2022.5.8)
Windows系统编译GSL2.7用于C语言编程(2022.5.8) 1. GSL(GNU Scientific Library) 1.1 GSL简介 1.2 前人在Windows平台下已编译好的GS ...
- Windows系统编程之异步I/O和完成端口 [北极星2003 看雪论坛]
一. 同步I/O和异步I/O 在介绍这部分内容之前先来认识下"异步I/O". 说起异步IO,很容易联想到同步I/O,对于同一个I/O对象句柄在同一时刻只允许一个I/O操作,其 ...
- C++ GUI Programming with Qt4 Second Edition 之 附录A.2 Windows系统Qt的安装
A.2 Windows系统Qt的安装 在本书编写时,Windows平台的Qt安装包是qt-win-opensource-4.3.2-mingw.exe(http://download.qt.io/ar ...
最新文章
- React-项目-引入外部的样式(14)
- b2c开发模式的数据库设计
- 《解释性机器学习》笔记(五):Rule Fit 规则拟合
- 匹配printf()说明符的类型
- 二、Linxu的目录结构
- 面试官系统精讲Java源码及大厂真题 - 47 工作实战:Socket 结合线程池的使用
- 几个国内外远程工作平台
- jquery常用事件——幕布
- caffe源码解析by薛云峰
- OneDrive 挂载为本地磁盘Ubuntu
- 蜀门207服务端GM命令大全
- 移动建站工具(一):分秒钟将Web网站移动化
- SpringBoot 与 Kotlin 完美交融
- 理论结合实际:如何调试神经网络并检查梯度
- ios13 微信提示音插件_iOS13免越狱修改微信提示音方法!亲测有用!
- solidworks创新作业无限魔方
- Excel高级功能 数据工具
- Mac 不能将项目xxx移到废纸篓,因为它已打开
- Qt大屏电子看板系统源码基础版
- 中国筒仓罐市场现状研究分析与发展前景预测报告(2022)
热门文章
- Java线下面试笔试总结
- vue cli3兼容win7 32位的ie8浏览器打不开提示页面,处理方式,跳转提示的页面是后端路由指向
- Flink_来自两条流的订单交易匹配(Connect, CoProcessFunction)
- 三态输出门实验报告注意事项_广东KGPS电源使用注意事项
- Docker系列 WordPress系列 你需要个人博客吗
- pd数据流图怎么画_数据流图(DFD)画法
- react +antd-mobile图片上传插件(ImageUploader,支持七牛云直传)
- 什么是尖端放电?什么叫电击?什么叫暂态电击?什么叫稳态电击?
- web站点的ssl安全性检测
- win vm 安装苹果虚拟机 显示logo