java中一个简单的涂鸦程序
涂鸦是一个在网络聊天中经常会用到的工具,由于笔者水平有限,只能说下一个简单的涂鸦,就是在面板中可以用画笔自己花一些东西。我使用的是画实心矩形(或者圆形)来达到目的,通过监听鼠标事件来获得鼠标点击的坐标,即使用 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中一个简单的涂鸦程序相关推荐
- java递归怎么写_什么是递归?用Java写一个简单的递归程序
什么是递归?用Java写一个简单的递归程序 递归的定义 递归(recursion):以此类推是递归的基本思想,将规模大的问题转化为规模小的问题来解决. 递归的要素 自定义递归函数,并确定函数的基本功能 ...
- 用java开发一个简单的安卓程序,Android NDK开发简单程序分享(Hello Word!)
在之前的博客中已经为大家介绍了,如何在win环境下配置DNK程序,本篇我将带大家实现一个简单的Hello jni程序,让大家真正感受一下NDK开发的魅力.这里我们选择使用C+JAVA开发Android ...
- java体重指数计算器程序_用Java编写一个简单的计算器程序
展开全部 import java.awt.*; import java.awt.event.*; public class CalcAppDemo extends Frame{ private Tex ...
- Java 百度AI 写一个简单的手势识别程序
教程地址:请关注我的https://edu.csdn.net/course/detail/23001 Java写一个简单的手势识别程序,这里采用百度是AI,视觉技术中的人体分析中的手势识别,识别图片中 ...
- java写一个搜索引擎_搜索引擎—-Java实现一个简单的网络爬虫
Java实现一个简单的爬虫程序. package SearchCrawler;import java.util.*;import java.net.*;import java.io.*;import ...
- 如何复制java卡,使用java做一个简单的集卡程序
使用java做一个简单的集卡程序 本次设想的是要集齐4张卡,每张卡的概率都是25%,如果每个用户集齐需要多少次才能集合完毕 public class Test { public static void ...
- java完成一个学生信息调查程序_利用Java设计一个简单的学生信息管理程序
利用Java设计一个简单的控制台学生信息管理程序 此程序可作为课设的参考,其中信息存储于文件中. 创建了学生类Student,用于存储学号等的信息.创建StudentFunction类,用于实现诸如学 ...
- 如何用Java设计一个简单的窗口界面(学习中.1)
如何用Java设计一个简单的窗口界面 一.前言 二.简单了解 1.Swing简介 2.框架(frame) 3.层次 三.步骤 1.打开eclipse,依次创建项目,包,类. 2.代码 2.1最简单的可 ...
- JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...
用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...
最新文章
- 编写高质量代码 Web前端开发修炼之道 读书笔记
- 可视化工具第一篇(百度Echarts)
- SAP应用followup transaction的错误讨论
- 使用活动记录执行CRUD
- 百度成立互联网医院;钉钉招小学生产品体验师;iOS 13.4 上线 | 极客头条
- 【Flutter】IOS打包
- hp服务器系统如何用u盘恢复,软硬件技巧 篇三:HP战66之恢复U盘制作,以及恢复系统之体验感想...
- 数据分析可视化图表mysql_50个最有价值的数据可视化图表
- 甲方爸爸素材给得少,怎么做出高大上的设计?
- Centos7 日志查看工具journalctl 使用
- 用思维导图描绘5G场景
- PS中的颜色深度1位8位16位32位的解释
- Qt系列文章之 右键菜单QMenu(下)
- android 4.4.2 安全漏洞修复
- ACCV 2020 最受关注的 Top10 代码开源论文!
- java 移动目录_java 移动文件夹内的文件,从一个目录移动到另外一个目录
- 【思特奇杯·云上蓝桥-算法集训营】第1周(第八题:excel 地址)(出错)
- 如何解决LabView的Active X容器中无Animation GIF Control问题
- Linux命令 - wget
- C/C++数字后面的L是什么意思?
热门文章
- switch 和 break 用法
- 画风突变!用友云全新定义数字企业智能服务
- 各代iphone尺寸_历代16款iPhone厚度对比:最薄的竟是iPhone 6!
- OpenCV中的GUI特性 —— 图片与视频的读写和显示
- uniapp提示用户开启定位,跳转到开启定位页面
- [附源码]Python计算机毕业设计大学生健康管理系统的设计与实现Django(程序+LW)
- 秒懂Android属性动画
- 开发者工具绕过前端debuger
- windows同时代服务器系统,从Win95到Win10:那些年让你痴迷的系统特性大盘点
- eclipse网络代理设置