目的:想要实现鼠标画画
import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; 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){ super(title); setBounds(200,200,400,300); //存鼠标点击的点 points = new ArrayList<>(); //鼠标监听器,正对这个窗口 this.addMouseListener(new MyMouseListener()); setVisible(true); } @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.y,point.x,10,10); } } //添加一个点到界面上 public void adPaint(Point point){ points.add(point); } /**private class MyMouseListener implements MouseListener{} * 这里可以这么去写,但是它属下的方法太多了,这个时候我们选择适配器模式 */ private class MyMouseListener extends MouseAdapter{//适配器模式的好处就是可以不用把里面的方法全部写一遍 //鼠标有 按下,弹起,按住不放 @Override public void mousePressed(MouseEvent e) { super.mousePressed(e); MyFrame frame = (MyFrame) e.getSource();//这里需要强转 //这里我们点击的时候就会产生一个点 frame.adPaint(new Point(e.getX(),e.getY())); //每次点击鼠标都需要重新画一遍 frame.repaint();//刷新 } } }