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、鼠标监听事件、模拟画图工具)相关推荐

  1. 基于《狂神说java》GUI编程--学习笔记

    前言: 本笔记参考于学友:小尹^_^ :本笔记仅做学习与复习使用,不存在刻意抄袭. ---------------------------------------------------------- ...

  2. Java 8 函数式编程学习笔记

    Java 8 函数式编程学习笔记 @(JAVASE)[java8, 函数式编程, lambda] Java 8 函数式编程学习笔记 参考内容 Java 8中重要的函数接口 扩展函数接口 常用的流操作 ...

  3. 【Java】函数式编程学习笔记——Stream流

    学习视频:https://www.bilibili.com/video/BV1Gh41187uR?p=1 (1)[Java]函数式编程学习笔记--Lambda表达式 (2)[Java]函数式编程学习笔 ...

  4. python的messagebox的用法_Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解...

    本文实例讲述了Python GUI编程学习笔记之tkinter中messagebox.filedialog控件用法.分享给大家供大家参考,具体如下: 相关内容: messagebox 介绍 使用 fi ...

  5. AWT_addMouseListener鼠标监听事件(Java)

    AWT_addMouseListener鼠标监听事件(Java) package reflect;import java.awt.*; import java.awt.event.MouseAdapt ...

  6. JAVA UDP网络编程学习笔记

    一.UDP网络编程概述 采用TCP协议通信时,客户端的Socket必须先与服务器建立连接,连接建立成功后,服务器端也会持有客户端连接的Socket,客户端的Socket与服务器端的Socket是对应的 ...

  7. 网络协议和Netty——第二章 Java原生网络编程学习笔记

    编程中的Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说, ...

  8. windows核心编程学习笔记(六)动态链接库

    动态链接库有很多优点: •扩展了应用程序的特性 •可以用许多种编程语言来编写 •简化了软件项目的管理 •有助于节省内存 •有助于资源的共享 •有助于应用程序的本地化 •有助于解决平台差异 •可以用于一 ...

  9. java鼠标监听事件_JAVA 鼠标事件监听ACTIONLISTENER

    当鼠标点击和放开时发生动作事件: 方法摘要: actionPerformed(ActionEvent e) 发生操作时调用. 列:public class shijian extends Frame ...

最新文章

  1. 编程之美系列之二——寻找出现频率超过一半的数
  2. rpm包时遇到Header V3 DSA signature: NOKEY时解决办法
  3. 计算机在我国开始被应用于,计算机应用推动自动化与信息化的发展
  4. SkinSharp皮肤模块源码 原33个皮肤模块
  5. linux之mktemp命令
  6. 【论文写作】课程指导平台的开发中需求分析如何写
  7. idea lib下有jar包但是仍然报错 找不到类
  8. MySQL · 答疑解惑 · MySQL Sort 分页
  9. IDEA运行java文件环境配置
  10. linux两台设备网桥配置,Linux网桥配置
  11. linux摄像头内核驱动开发,Linux系统下USB摄像头驱动开发
  12. 地球物理及空间物理相关数据下载
  13. uvc和v4l2简介
  14. [玩转北京] 北京最值得你一看的博物馆大全
  15. 给轮廓画出矩形和圆形边界
  16. 软考高级-信息系统管理师之质量管理(最新版)
  17. 火狐经典主题_Firefox的2010年假日角色角色主题
  18. 为什么我学51单片机很顺利,学STM32却一头雾水?
  19. 求阶乘的和(C++)
  20. quick-and-dirty如何翻译

热门文章

  1. c语言之字符个数统计、 统计成绩、打印沙漏 、整数的分类处理 、不变初心数
  2. 【剑指offer】登峰造极--数组中重复的数字
  3. java xml转json数组,java-如何将单个子xml元素转换为Json Array
  4. Cannot set priority of datanode process,hadoop3.1.3配置问题
  5. 糟糕的程序员并不愚蠢,只是……
  6. 思维导图MindManager基础教程
  7. SVN操作报错(乱码浠vn cleanup钬)
  8. 如何设置浏览器代理 - 插件 Foxyproxy (火狐firefox) 和SwitchyOmega(谷歌chrome)
  9. CRM客户关系管理系统开发第二讲——实现用户的注册和登录功能
  10. CSS:margin属性的auto值