适配器
把接口方法全部重写了一遍。如果我们想实现这个接口的一个方法,只需要通过继承这个接口的适配器,重写自己需要的方法即可
下面是一个画点的小程序:
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<Point> points = null; //容器装鼠标点击的坐标
MyFrame(String s) {
super(s);
points = new ArrayList<Point>();
setLayout(null);
setBounds(300,300,400,300);
setBackground(new Color(204,204,255));
setVisible(true);
addMouseListener(new Monitor()); //添加鼠标监听器
}
public void paint(Graphics g) {//重写画图方法
Iterator<Point> i = points.iterator();
while(i.hasNext()) {
Point p = 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 {
//利用鼠标适配器实现MouseListener,只需要重写自己需要的方法即可
public void mousePressed (MouseEvent e) {
//监听到的事件信息全部封装到 e中(有多态存在)
MyFrame f = (MyFrame)e.getSource();
//将e的信息源强制转换成调用对象MyFrame
f.addPoint(new Point(e.getX(), e.getY()));
//得到坐标点,保存
f.repaint();
//重画(先调用update(),再调用paint(),双缓冲机制)
}
}