Adapter鼠标适配器

一.概念认知

 

二.代码示例

package com.awt;

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;

public class MyMouseAdapter {
    public static void main(String[] args) {
        new MyFrame("果子");
    }
}

class MyFrame extends Frame{
    ArrayList points = null;
    MyFrame(String s) {
        super(s);
        points = new ArrayList();
        setBounds(300, 300, 400, 300);
        setLayout(null);
        this.setBackground(new Color(204, 204, 255));
        setVisible(true);
        /*
         * public void addMouseListener(MouseListener l)
         * 添加指定的鼠标以从该组件接收鼠标事件。
         * 方法来源自类Compinent
         */
        this.addMouseListener(new Monitor());
    }
    
    public void paint(Graphics g) {
        //用迭代器将集合中的鼠标点击空间坐标点用蓝色画笔以实心圆的形式画出
        Iterator i = points.iterator();
        while(i.hasNext()) {
            Point p = (Point)i.next();
            g.setColor(Color.BLUE);
            g.fillOval(p.x, p.y,10,10);
        }
    }
    public void addPoint(Point p) {
        points.add(p);
    }
    class Monitor extends MouseAdapter{
        /*
         * mousePressed(MouseEvent e) 
         * 在组件上按下鼠标按钮时调用。
         */
        public void mousePressed(MouseEvent e) {
            /*
             * getSource() 事件最初发生的对象。
             * 方法来自父类EventObject
             */
            MyFrame f = (MyFrame)e.getSource();
            /*
             * 得到在窗口中鼠标点击的空间坐标位置
             */
            f.addPoint(new Point(e.getX(),e.getY()));
            //强制重画
            f.repaint();
        }
    }
}

程序分析:就是鼠标点击传送事件给监听器,监听器MouseAdapter是MouseListener接口的子类,使用子类监听的好处是,只需实现自己想要的事件,不需要把所有事件方法都重写一遍,根据事件源通过point方法得到鼠标点击坐标,放入集合中,通过迭代器将点击坐标以实心圆的形式显示出来

posted @ 2019-01-18 17:21  静心*尽力  阅读(391)  评论(0编辑  收藏  举报