Awt组件基础----鼠标监听(实现鼠标画图)

效果图:

image
PS:画画太丑,勿喷!!!

思路:

image

JAVA代码实现:

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Iterator;

/**
 * 模拟画图工具---鼠标监听事件
 * @author Steven
 *
 */
public class TestMouseListener {
	public static void main(String[] args) {
		new MyFrame("画图");
	}
}


//自己的类
class MyFrame extends Frame{
	//画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点
	ArrayList points;
	
	public MyFrame(String title) {
		super(title);
		setBounds(200,200,400,300);
		//存鼠标点击的点
		points = new ArrayList<>();
		
		setVisible(true);
		windowClose(this);//关闭窗口
		
		//鼠标监听器,针对这个窗口
		this.addMouseListener(new MyMouseListener());
	}
	
	@Override
	public 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);
		}
	}
	
	//添加一个点到界面上
	public void addPaint(Point point) {
		points.add(point);
	}
	
	//适配器模式
	private class MyMouseListener extends MouseAdapter {
		//鼠标     按下、弹起、按住不放
		@Override
		public void mousePressed(MouseEvent e) {
			MyFrame frame = (MyFrame) e.getSource();
			//这里我们点击的时候,就会在界面上产生一个点:画
			//这个点就是鼠标的点;
			frame.addPaint(new Point(e.getX(),e.getY()));
			
			//每次点击鼠标都需要重新画一遍
			frame.repaint();//刷新
		}
		
	}
	
	//关闭窗体的事件
	private static void windowClose(MyFrame frame) {
		frame.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}
	
}
posted @ 2021-04-25 19:33  Steven·Park  阅读(185)  评论(0)    收藏  举报