マウスイベントアダプタ


1、マウスイベントアダプタ:抽象クラスjava.awt.event.MouseAdapterはMouseListenerインタフェースを実現し、そのサブクラスをMouseEventのリスナーとして使用することができ、対応するメソッドを書き換えるだけで、アダプタを使用してリスナークラス定義に必要な空のメソッド(MyMouseAdapter.java)を回避することができる.

import java.awt.*;
import java.awt.event.*;
import java.util.*;

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

@SuppressWarnings("serial")
class MyFrame extends Frame {
	ArrayList<Point> points = null; //  List  ,   

	@SuppressWarnings("unchecked")
	MyFrame(String s) {
		super(s);  //    
		points = new ArrayList();
		setLayout(null);
		setBounds(300, 300, 400, 300);
		this.setBackground(new Color(204, 204, 255));
		setVisible(true);
		this.addMouseListener(new Monitor());//     
	}

	public void paint(Graphics g) { //    paint
		Iterator<Point> 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 { //     
	public void mousePressed(MouseEvent e) { //   copy
		MyFrame f = (MyFrame) e.getSource();  //     
		f.addPoint(new Point(e.getX(), e.getY()));//         
		f.repaint();  //      ,repaint()  update(),update()  paint()
	}
}