import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class TestMouseMotion {
public static void main(String args[]) {
new MyFrame88("drawing...");
}
}
class MyFrame88 extends Frame {
ArrayList<Point> points = null;
MyFrame88(String s) {
super(s);
points = new ArrayList<Point>();
setLayout(null);
setBounds(300,300,400,300);
this.setBackground(new Color(204,204,255));
setVisible(true);
System.out.println("good");
this.addMouseListener(new Monitor());
System.out.println("beter");
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void paint(Graphics g) {
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 {
// private int num = 0;
public void mouseClicked(MouseEvent e) {
MyFrame88 f = (MyFrame88)e.getSource();
f.addPoint(new Point(e.getX(),e.getY()));
// if(num++ >= 5){
// f.repaint();
// num=0;
// }
}
}
repaint(int x, int y, int width, int height)只是告诉重绘管理器需要重绘一个矩形区域,在这个区域里面绘制的是什么,要看paint()里面的代码。实际上在调repaint(int x, int y, int width, int height)的时候,就说明已经知道里面需要重绘什么。