• 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方法得到鼠标点击坐标,放入集合中,通过迭代器将点击坐标以实心圆的形式显示出来

  • 相关阅读:
    27个提升效率的iOS开源库推荐
    HTTP Authorization
    两种方法删除NSUserDefaults所有记录
    label调整字间距,调整行间距
    iphone手机屏幕大小
    app 图标需要的大小
    多了一层或者多层响应者 如何实现跳转
    用python实现excel中查找指定字符的行信息
    Python 遍历一个目录,输出所有的文件名
    kettle HTTP client
  • 原文地址:https://www.cnblogs.com/zjm1999/p/10288820.html
Copyright © 2020-2023  润新知