new Modela()
没有设置Point
调用下这个
public void setPoint(Point p){
        this.pp=p;
    }

解决方案 »

  1.   

    楼主将第四行代码
    Point pp ;
    改为
    Point pp = new Point();
    就不会报空指针了
      

  2.   

    但如果将代码改为
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    class Model extends Frame{
    ArrayList<Point> points=null;
    public void launch(){
    this.setBounds(300,300,800,800);
    points = new ArrayList<Point>();
    this.setLayout(null);
    this.setBackground(Color.BLACK);
    Moi mo = new Moi();
    this.addMouseListener(mo);
    this.setVisible(true);
    }

    public void addpoint(Point t){
    points.add(t);
    }

    public void paint(Graphics c){
    Iterator i = points.iterator();
    while(i.hasNext()){
    Point p = (Point)i.next();
    Color col= c.getColor();
    c.setColor(Color.GREEN);
    c.fillOval(p.x,p.y, 10, 10);
    }
    }
    }class Moi extends MouseAdapter{
    public void mousePressed(MouseEvent e){
    Model d = (Model)e.getSource();
    d.addpoint(new Point(e.getX(),e.getY()));
    d.repaint();
    }
    }
    public class Mouse { public static void main(String[] args) {
    new Model().launch(); }}
    用一个ArrayList保存了Point,为什么在初始调用时就不会报空指针错误?
      

  3.   

    哥们,frame的刷新会调用 public void paint(Graphics c){
            c.setColor(Color.ORANGE);
            c.fillOval(pp.x,pp.y,15,15);
        },所以,你在创建frame后,如果没有点击鼠标你的pp是空的,自然会空指针,至于你后面用一个ArrayList保存了Point,为什么在初始调用时就不会报空指针错误?是应为你初始化了points = new ArrayList<Point>();当调用到paint的时候发现points 的长度是0,这时候不会调用 c.fillOval(pp.x,pp.y,15,15);当然不空指针了