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;
  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) {
    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 {
  public void mousePressed(MouseEvent e) {
    MyFrame f = (MyFrame)e.getSource();
    f.addPoint(new Point(e.getX(),e.getY()));
    f.repaint();
  }
}这个方法里面内容看不懂
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);
    }

解决方案 »

  1.   

    重载了paint方法,然后遍历了points集合,对于每个点,用蓝色填充了一个椭圆。执行下看看就知道了。
      

  2.   

    主要是这两句 Iterator i = points.iterator();
      while(i.hasNext())
    完全不懂什么意思,有什么用
      

  3.   

    这叫迭代器
    对集合进行迭代
    当集合中还有可以迭代的元素的时候,hasNext方法会返回true
    这里你可以理解成
    一个循环,依次在points中的点的坐标上画圈圈
      

  4.   

    这个程序就是先建立一个 ArrayList points = null,这个arraylist用来存储一个点,相当于你用鼠标在客户区中点击一下就将你点击的点坐标加入arraylist中,paint是重载方法,graphic g相当于一个画图的类,用Iterater迭代类遍历list中的节点,然后在屏幕上画出来,其实很多语言都有重载paint方法,比如C#差不多
      

  5.   

    Iterator i = points.iterator();
       Iterator 是一个迭代的借口, iterator()是Collection接口实现的一个方法, 这里使用Iterator的对象i 来获取ArrayList对象 points的迭代结果。while(i.hasNext())
       hasNext()方法是Iterator的方法,用来判断i当中是否还有元素可以迭代,如果有,则返回 true,否则返回false.