涂鸦是一个在网络聊天中经常会用到的工具,由于笔者水平有限,只能说下一个简单的涂鸦,就是在面板中可以用画笔自己花一些东西。我使用的是画实心矩形(或者圆形)来达到目的,通过监听鼠标事件来获得鼠标点击的坐标,即使用 e.getX(  ),  e.getY(  ) 来获得鼠标点击出的坐标,然后将这个坐标存到容器中,以便在 重写 paint()方法是使用,来达到画出痕迹的效果。 Point 类是做前面的程序时候留下的,我顺便用了下。Point类写的就是一个 点  的类。

package com.lovo;
/*** 本程序是写的是一个 “点” 的类* @author 杜海**/
public class Point {private int x,y;
/*** 定义了一个空构造器*/public Point() {  }
/*** 定义了一个含有参数x,y的构造器* @param x* @param y*/public Point(int x, int y) {super();this.x = x;this.y = y;}/*** 计算两点之间的距离* @param p1* @return*/public double distance(Point p1){return Math.sqrt((x-p1.x)*(x-p1.getX())+(y-p1.getY())*(y-p1.getY()));}/*** @return the x  得到x*/public int getX() {return x;}/*** @return the y    得到y*/public int getY() {return y;}/*** @param x the x to set*/public void setX(int x) {this.x = x;}/*** @param y the y to set*/public void setY(int y) {this.y = y;}}
package com.lovo;import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;import javax.swing.JButton;
import javax.swing.JFrame;
/*** 本程序是写的一个简单的涂鸦程序,通过鼠标监听来获得相应屏幕的坐标* @author Administrator**/
@SuppressWarnings("serial")
public class Painting extends JFrame {private Image offimage=new BufferedImage(500,400,1);   //使用双缓冲来解决屏幕闪动private Point p1 = new Point(), p2 = new Point();private List<Point> list = new ArrayList<Point>();public Painting() {this.setTitle("画图");this.setSize(500, 400);this.setResizable(false);this.setLayout(null);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.addMouseListener(new MouseAdapter() {      //鼠标监听 获得屏幕坐标@Overridepublic void mouseReleased(MouseEvent e) {p1.setX(e.getX());p1.setY(e.getY());p2 = new Point(p1.getX(), p1.getY());list.add(p2);repaint();}});}
/*** 重写paint 方法*/@Overridepublic void paint(Graphics g) {Graphics offG=offimage.getGraphics();super.paint(offG);offG.setColor(Color.BLUE);Graphics2D g2d=(Graphics2D) offG;g2d.setStroke(new BasicStroke(5));System.out.println(list.size());for (int i = 0; i < list.size() ; i++) {int x1 = list.get(i).getX();int y1 = list.get(i).getY();offG.fillRect(x1-5, y1-5, 10, 10);}g.drawImage(offimage, 0, 0, null);}
/***main 函数的入口  * @param args*/public static void main(String[] args) {new Painting().setVisible(true);}
}

java中一个简单的涂鸦程序相关推荐

  1. java递归怎么写_什么是递归?用Java写一个简单的递归程序

    什么是递归?用Java写一个简单的递归程序 递归的定义 递归(recursion):以此类推是递归的基本思想,将规模大的问题转化为规模小的问题来解决. 递归的要素 自定义递归函数,并确定函数的基本功能 ...

  2. 用java开发一个简单的安卓程序,Android NDK开发简单程序分享(Hello Word!)

    在之前的博客中已经为大家介绍了,如何在win环境下配置DNK程序,本篇我将带大家实现一个简单的Hello jni程序,让大家真正感受一下NDK开发的魅力.这里我们选择使用C+JAVA开发Android ...

  3. java体重指数计算器程序_用Java编写一个简单的计算器程序

    展开全部 import java.awt.*; import java.awt.event.*; public class CalcAppDemo extends Frame{ private Tex ...

  4. Java 百度AI 写一个简单的手势识别程序

    教程地址:请关注我的https://edu.csdn.net/course/detail/23001 Java写一个简单的手势识别程序,这里采用百度是AI,视觉技术中的人体分析中的手势识别,识别图片中 ...

  5. java写一个搜索引擎_搜索引擎—-Java实现一个简单的网络爬虫

    Java实现一个简单的爬虫程序. package SearchCrawler;import java.util.*;import java.net.*;import java.io.*;import ...

  6. 如何复制java卡,使用java做一个简单的集卡程序

    使用java做一个简单的集卡程序 本次设想的是要集齐4张卡,每张卡的概率都是25%,如果每个用户集齐需要多少次才能集合完毕 public class Test { public static void ...

  7. java完成一个学生信息调查程序_利用Java设计一个简单的学生信息管理程序

    利用Java设计一个简单的控制台学生信息管理程序 此程序可作为课设的参考,其中信息存储于文件中. 创建了学生类Student,用于存储学号等的信息.创建StudentFunction类,用于实现诸如学 ...

  8. 如何用Java设计一个简单的窗口界面(学习中.1)

    如何用Java设计一个简单的窗口界面 一.前言 二.简单了解 1.Swing简介 2.框架(frame) 3.层次 三.步骤 1.打开eclipse,依次创建项目,包,类. 2.代码 2.1最简单的可 ...

  9. JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...

    用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...

最新文章

  1. 编写高质量代码 Web前端开发修炼之道 读书笔记
  2. 可视化工具第一篇(百度Echarts)
  3. SAP应用followup transaction的错误讨论
  4. 使用活动记录执行CRUD
  5. 百度成立互联网医院;钉钉招小学生产品体验师;iOS 13.4 上线 | 极客头条
  6. 【Flutter】IOS打包
  7. hp服务器系统如何用u盘恢复,软硬件技巧 篇三:HP战66之恢复U盘制作,以及恢复系统之体验感想...
  8. 数据分析可视化图表mysql_50个最有价值的数据可视化图表
  9. 甲方爸爸素材给得少,怎么做出高大上的设计?
  10. Centos7 日志查看工具journalctl 使用
  11. 用思维导图描绘5G场景
  12. PS中的颜色深度1位8位16位32位的解释
  13. Qt系列文章之 右键菜单QMenu(下)
  14. android 4.4.2 安全漏洞修复
  15. ACCV 2020 最受关注的 Top10 代码开源论文!
  16. java 移动目录_java 移动文件夹内的文件,从一个目录移动到另外一个目录
  17. 【思特奇杯·云上蓝桥-算法集训营】第1周(第八题:excel 地址)(出错)
  18. 如何解决LabView的Active X容器中无Animation GIF Control问题
  19. Linux命令 - wget
  20. C/C++数字后面的L是什么意思?

热门文章

  1. switch 和 break 用法
  2. 画风突变!用友云全新定义数字企业智能服务
  3. 各代iphone尺寸_历代16款iPhone厚度对比:最薄的竟是iPhone 6!
  4. OpenCV中的GUI特性 —— 图片与视频的读写和显示
  5. uniapp提示用户开启定位,跳转到开启定位页面
  6. [附源码]Python计算机毕业设计大学生健康管理系统的设计与实现Django(程序+LW)
  7. 秒懂Android属性动画
  8. 开发者工具绕过前端debuger
  9. windows同时代服务器系统,从Win95到Win10:那些年让你痴迷的系统特性大盘点
  10. eclipse网络代理设置