/*
时间:2015年3月21日21:02:11
程序目的:使用适配器MouseAdapter来在窗体中点击生成红色圆圈
在这里我们总结一下鼠标事件适配器的
类MouseAdapter 继承自Object
接收鼠标事件的抽象适配器类。此类中的方法为空,此类存在的目的是方便创建侦听器
对象。
鼠标事件使用户能够跟踪鼠标何时被按下,释放,单击,移动,拖动,何时进入一个
组件,何时推出,何时滚动鼠标游轮
扩展此类可创建MouseEvent(包括拖动和移动事件)或MouseWheelEvent侦听器
,并针对所需时间重写方法。(如果要实现MouseListener和MouseMotinListener接口,则
必须定义该接口中的所有方法。此抽象类将所有的方法定义为null,所以只需针对关心事件定义方法)
使用扩展的类创建一个侦听器对象,然后使用组件的addMouseListener、addMouseMotionListener和
addMouseWheelListener方法想该组件注册此侦听器对象。侦听器对象中的相关方法被调用。MouseEvent或者
MouseWheelEvent在一下情况下被传递给该对象。
当鼠标键被按下。释放或单击(按下并释放)时
当鼠标光标进入或退出某个组件时
当鼠标游轮滚动,或者鼠标被移动或者拖动时
*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MyMouseAdapter {
public static void main(String[] args) {
new MyFrame("Drawing....");
}
}
class MyFrame extends Frame {
ArrayList points = null;
public MyFrame(String title) {
super(title);
points = new ArrayList();
setLayout(null);
setBounds(300, 300, 500, 600);
addMouseListener(new MyAdapter());
setVisible(true);
}
public void paint(Graphics g) {
Iterator it = points.iterator();
while (it.hasNext()) {
Point p = (Point)it.next();
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(p.x, p.y, 50, 50);
}
}
public void addPoint(Point p) {
points.add(p);
}
}
class MyAdapter extends MouseAdapter {
private int num = 0;
public void mouseClicked(MouseEvent e) {
MyFrame mf = (MyFrame)e.getSource();
mf.addPoint(e.getPoint());
mf.repaint();
}
}