/*
* 对程序的详细解释:当进入main方法后会调用MyFrame的构造方法,程序开始执行MyFrame这个类的代码
* 首先会加载出一个ArrayList的对象,还有一个Frame窗口,这个窗口监听着鼠标的动作
* 由于重写了paint方法,所以创建出窗口后会自动调用paint方法,该方法的第一行代码是调用了从AbstractList继承来的方法iteraror()
* 在API文档中的解释是public Iterator<E> iterator()返回以恰当顺序在此列表的元素上进行迭代的迭代器。以方便遍历ArrayList里面的元素
* (Iterator和Iterable同为接口,区别是什么?Iterator i= points.iterator ();这是实例化接口的意思吗?不是抽象类和接口都不能被实例化的吗?)
* 对于while (i.hasNext ())和Point p= (Point) i.next ();这两句话有疑问。如果只点了一下鼠标,那么里面就只有一个点,那么hasNext()会返回true吗,
* 因为确实可以在窗口上画出一个点,说明肯定是返回true的,并且把next的这个点画了出来,那么这个next是对于哪个元素而言的?
* 按照程序的要求monitor应该要实现MouseListener这个接口,却为什么是继承MouseAdapter这个类呢?因为实现接口必须重写接口里面所有的方法,对于这个程序来言
* 没必要,而MouseAdapter实现了接口里所有的方法,所以只有继承他并重写需要的方法就好了。
* repaint的作用是刷新(重画)这个窗口,执行过程是 repaint->update->paint
* 这个程序的执行过程是:main->myframe->paint->monitor->addpoint->repaint,也就是从main方法进入后会创建出一个窗口,这个窗口监听着鼠标事件,
* 同时在不停地遍历Arraylist里面有没有点。如果鼠标被按下了paint就把这个点画出来。