失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Java之GUI编程学习笔记六 —— AWT相关(画笔paint 鼠标监听事件 模拟画图工具)

Java之GUI编程学习笔记六 —— AWT相关(画笔paint 鼠标监听事件 模拟画图工具)

时间:2022-10-17 10:18:55

相关推荐

Java之GUI编程学习笔记六 —— AWT相关(画笔paint 鼠标监听事件 模拟画图工具)

Java之GUI编程学习笔记六 —— AWT相关(画笔paint)

参考教程B站狂神/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 鼠标监听事件 模拟画图工具)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。