lesson11:鼠标监听事件-绘点

发布时间 2023-10-13 16:14:17作者: viking97816

 

 

package com.zym.lesson11;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Iterator;

//测试鼠标监听事件
public class TestMouseListener {

    public static void main(String[] args) {
          new MyFrame11("lesson11:鼠标监听事件-绘点");
    }
}

class MyFrame11 extends JFrame{

    ArrayList points;
    //1 画笔   2鼠标位置  3 需要集合来存储这些点
   public MyFrame11(String title){
         super(title);
         setBounds(100,100,400,200);
       //存鼠标坐标点
       points=new ArrayList();
       //添加鼠标监听器
       this.addMouseListener(new Zym_MouseListener());

       //设置可见
       setVisible(true);

       addWindowListener(new WindowAdapter() {
                             //窗体关闭时做的事
                             @Override
                             public void windowClosing(WindowEvent e) {
                                 // super.windowClosed(e);
                                 System.exit(0);
                             }
                         }
       );

   }


    @Override
    public void paint(Graphics g) {
       //实现画点的类

        Iterator iterator=points.iterator();
        while (iterator.hasNext()){
           Point point= (Point) iterator.next();
           g.setColor(Color.RED);
           g.fillOval(point.x,point.y,10,10);
        }

    }

    //添加点到界面上来 ,添加类
    public void addPaint(Point p){

      points.add(p);
    }


    //适配器模式 ,监听器类
    private class Zym_MouseListener extends MouseAdapter {
       //鼠标点击  鼠标按住  鼠标弹起

        @Override
        public void mousePressed(MouseEvent e) {
            MyFrame11 myFrame11=(MyFrame11) e.getSource();
            //获得当前鼠标的点
            myFrame11.addPaint(new Point(e.getX(),e.getY()));
            //每次点击鼠标,需要它重画一遍
            myFrame11.repaint();
        }

    }


}