Java之GUI编程学习笔记六 —— AWT相关(画笔paint、鼠标监听事件、模拟画图工具)
Java之GUI编程学习笔记六 —— AWT相关(画笔paint)
参考教程B站狂神https://www.bilibili.com/video/BV1DJ411B75F
了解paint
- Frame自带画笔paint
package pers.ylw.lesson03;import java.awt.*;public class TestPaint {public static void main(String[] args) {new MyPaint().loadFrame();}
}class MyPaint extends Frame{public void loadFrame(){setBounds(200,200,600,500);setVisible(true);}//重写Frame自带的画笔paint方法@Overridepublic void paint(Graphics g) {//画笔,需要颜色,可以画画g.setColor(Color.red);g.drawOval(100,100,100,100); //空心圆g.fillOval(200,100,100,100); //实心圆g.setColor(Color.blue);g.fillRect(100,200,200,200); //实心矩形//养成习惯,画笔用完要还原最初的颜色}
}
效果
模拟画图工具画点(用到鼠标监听事件)
思路
package pers.ylw.lesson03;import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;//鼠标监听事件
public class TestMouseListener {public static void main(String[] args) {new MyFrame("画图");}
}//自己的类
class MyFrame extends Frame{//画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点ArrayList points;public MyFrame(String title){ //title是窗口的名字super(title);setBounds(200,200,400,400);//存放鼠标点击的点points = new ArrayList();//鼠标监听事件,针对这个窗口啊this.addMouseListener(new MyMouseListener());setVisible(true);}//画笔,根据集合里存储的鼠标位置画点@Overridepublic void paint(Graphics g) {//画画,监听鼠标事件Iterator iterator = points.iterator(); //获取集合的迭代器while(iterator.hasNext()){Point point = (Point) iterator.next(); //获取当前集合存储的位置,如果迭代器有下一个,迭代器移动到下一个g.setColor(Color.BLUE); //设置画笔颜色//画一个实心圆,把获取到的鼠标的位置传进去,作为圆的位置,后两个参数是圆的直径g.fillOval(point.x,point.y,10,10);}}//继承适配器,不需要重写全部方法private class MyMouseListener extends MouseAdapter{//鼠标:按下,按住不放,弹起//这里是按住不放的监听@Overridepublic void mousePressed(MouseEvent e) {MyFrame myFrame = (MyFrame) e.getSource();//e.getSource()返回当前对象,然后强转//e代表当前的鼠标,获取其坐标,添加到集合里points.add(new Point(e.getX(),e.getY()));//调用画点,刷新画板myFrame.repaint(); //就是每点一下调用paint()方法//代码简化//MyFrame myFrame = (MyFrame) e.getSource();//e.getSource()返回当前对象,然后强转//这一行可以不写//myFrame.repaint(); //就是每点一下调用paint()方法//上面那一行不写,这一行就可以改成 repaint()}}
}
效果
Java之GUI编程学习笔记六 —— AWT相关(画笔paint、鼠标监听事件、模拟画图工具)相关推荐
- 基于《狂神说java》GUI编程--学习笔记
前言: 本笔记参考于学友:小尹^_^ :本笔记仅做学习与复习使用,不存在刻意抄袭. ---------------------------------------------------------- ...
- Java 8 函数式编程学习笔记
Java 8 函数式编程学习笔记 @(JAVASE)[java8, 函数式编程, lambda] Java 8 函数式编程学习笔记 参考内容 Java 8中重要的函数接口 扩展函数接口 常用的流操作 ...
- 【Java】函数式编程学习笔记——Stream流
学习视频:https://www.bilibili.com/video/BV1Gh41187uR?p=1 (1)[Java]函数式编程学习笔记--Lambda表达式 (2)[Java]函数式编程学习笔 ...
- python的messagebox的用法_Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解...
本文实例讲述了Python GUI编程学习笔记之tkinter中messagebox.filedialog控件用法.分享给大家供大家参考,具体如下: 相关内容: messagebox 介绍 使用 fi ...
- AWT_addMouseListener鼠标监听事件(Java)
AWT_addMouseListener鼠标监听事件(Java) package reflect;import java.awt.*; import java.awt.event.MouseAdapt ...
- JAVA UDP网络编程学习笔记
一.UDP网络编程概述 采用TCP协议通信时,客户端的Socket必须先与服务器建立连接,连接建立成功后,服务器端也会持有客户端连接的Socket,客户端的Socket与服务器端的Socket是对应的 ...
- 网络协议和Netty——第二章 Java原生网络编程学习笔记
编程中的Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说, ...
- windows核心编程学习笔记(六)动态链接库
动态链接库有很多优点: •扩展了应用程序的特性 •可以用许多种编程语言来编写 •简化了软件项目的管理 •有助于节省内存 •有助于资源的共享 •有助于应用程序的本地化 •有助于解决平台差异 •可以用于一 ...
- java鼠标监听事件_JAVA 鼠标事件监听ACTIONLISTENER
当鼠标点击和放开时发生动作事件: 方法摘要: actionPerformed(ActionEvent e) 发生操作时调用. 列:public class shijian extends Frame ...
最新文章
- 编程之美系列之二——寻找出现频率超过一半的数
- rpm包时遇到Header V3 DSA signature: NOKEY时解决办法
- 计算机在我国开始被应用于,计算机应用推动自动化与信息化的发展
- SkinSharp皮肤模块源码 原33个皮肤模块
- linux之mktemp命令
- 【论文写作】课程指导平台的开发中需求分析如何写
- idea lib下有jar包但是仍然报错 找不到类
- MySQL · 答疑解惑 · MySQL Sort 分页
- IDEA运行java文件环境配置
- linux两台设备网桥配置,Linux网桥配置
- linux摄像头内核驱动开发,Linux系统下USB摄像头驱动开发
- 地球物理及空间物理相关数据下载
- uvc和v4l2简介
- [玩转北京] 北京最值得你一看的博物馆大全
- 给轮廓画出矩形和圆形边界
- 软考高级-信息系统管理师之质量管理(最新版)
- 火狐经典主题_Firefox的2010年假日角色角色主题
- 为什么我学51单片机很顺利,学STM32却一头雾水?
- 求阶乘的和(C++)
- quick-and-dirty如何翻译
热门文章
- c语言之字符个数统计、 统计成绩、打印沙漏 、整数的分类处理 、不变初心数
- 【剑指offer】登峰造极--数组中重复的数字
- java xml转json数组,java-如何将单个子xml元素转换为Json Array
- Cannot set priority of datanode process,hadoop3.1.3配置问题
- 糟糕的程序员并不愚蠢,只是……
- 思维导图MindManager基础教程
- SVN操作报错(乱码浠vn cleanup钬)
- 如何设置浏览器代理 - 插件 Foxyproxy (火狐firefox) 和SwitchyOmega(谷歌chrome)
- CRM客户关系管理系统开发第二讲——实现用户的注册和登录功能
- CSS:margin属性的auto值