这个算法是在frame上鼠标一点,然后会在相应的位置画上椭圆的形状,但是不知道哪里
有问题...
import java.util.*;
import java.awt.*;
import java.awt.event.*;public class PaintPoint {
public static void main(String[] args) {
new Tpframe();
}
}class Tpframe extends Frame {
ArrayList<Point> aa = new ArrayList<Point>();  Tpframe() {
//setLayout(null);
setBounds(200, 300, 300, 300);
this.addMouseListener(new MyMouse());
setVisible(true); }

public void paint(Graphics g) {
Iterator it = aa.iterator();
g.setColor(Color.BLUE);
while(it.hasNext()) {
Point p = (Point)it.next();    //这里也有问题,我上面声名为范型了,为什么不强制转的话也会错
g.drawOval(p.x, p.y, 10, 10);  //这里也有问题
}
} public void addP(Point p) {
aa.add(p);
}}class MyMouse extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
Tpframe tp = (Tpframe)e.getSource();
tp.add(new Point(e.getX(), e.getY())); //这里不知道为什么错
tp.repaint();
}
}

解决方案 »

  1.   

    public class PaintPoint {
        public static void main(String[] args) {
            new Tpframe();
        }
    }class Tpframe extends Frame {
        ArrayList<Point> aa = new ArrayList<Point>();     Tpframe() {
            //setLayout(null);
            setBounds(200, 300, 300, 300);
            this.addMouseListener(new MyMouse());
            setVisible(true);    }
        
        public void paint(Graphics g) {
            Iterator<Point> it = aa.iterator();
            g.setColor(Color.BLUE);
            while(it.hasNext()) {
                Point p = it.next();    //这里也有问题,我上面声名为范型了,为什么不强制转的话也会错
                g.drawOval(p.x, p.y, 10, 10);  //这里也有问题
            }
        }    public void addP(Point p) {
            aa.add(p);
        }}class MyMouse extends MouseAdapter {
        public void mouseClicked(MouseEvent e) {
            Tpframe tp = (Tpframe)e.getSource();
            tp.addP(new Point(e.getX(), e.getY()));    //这里不知道为什么错
            tp.repaint();
        }
    }
      

  2.   

    呵呵,我也是这样改的,楼主的那个函数少了一个P哦,容器的add()函数只能增加一个容器类到顶级容器或中间容器中!
     g.drawOval(p.x, p.y, 10, 10);  这是没有问题的!
    还有那个类型转换的问题,我也不懂!
      

  3.   

    it.next()返回的是一个Object类型的···当然需要转型了····
      

  4.   


    API里面 it.next() 返回的是一个泛型,我前面已经定义了
    ArrayList是Point类型,所以这里本应该说不用强制转换...
      

  5.   

    Iterator<Point> it = aa.iterator();
    因为你是用迭代器取出来的,而迭代器并没有定义泛型。所以,取的时候要做类型转换。
    如果你改成这样:
    Point p = aa.get(0);
    就不用做强制类型转换了。
      

  6.   

    PaintPoint.java:27: 找不到符号
    符号: 变量 x
    位置: 类 Point
                g.drawOval(p.x, p.y, 10, 10);  //这里也有问题
                            ^
    PaintPoint.java:27: 找不到符号
    符号: 变量 y
    位置: 类 Point
                g.drawOval(p.x, p.y, 10, 10);  //这里也有问题
                                 ^
    PaintPoint.java:40: 找不到符号
    符号: 构造函数 Point(int,int)
    位置: 类 Point
            tp.addP(new Point(e.getX(), e.getY()));    //这里不知道为什么错
                    ^
    3 错误
    这是错误,是不是JDK1.6的问题......
      

  7.   

    找出问题了。。
    问题出在头文件上
    我加了 
    import java.awt.Point;
    就可以了,真怪