在Applet中生成随机三角形(动画)

时间:2012-05-28 21:39:26

标签: java applet

我尝试解决这个问题,但我有一个无限循环,不知道如何解决这个问题。引导我。我是Java的新手。

在终端:

Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
        at ThreadApplet.RandGen(ThreadApplet.java:10)
        at ThreadApplet.paint(ThreadApplet.java:30)
        at java.awt.Container.update(Container.java:1988)
        at sun.awt.RepaintArea.updateComponent(RepaintArea.java:255)

感谢帮助!

问题:编写一个小程序,以不同颜色显示随机生成的三角形。

    /////////////Applet

import java.awt.*;

import java.applet.*;

public class ThreadApplet extends Applet{
    MyThread thread;
    int x[],y[];
    public boolean ctrl=true;

    public void RandGen(){
        for (int i=0; i<3;i++){
            x[i]=(int)Math.random()*100;
            y[i]=(int)Math.random()*100;
        }       
    }

    public void start(){
        if (thread==null){
            thread = new MyThread(this);
            thread.start();
        }
    }

    public void stop(){
        thread = null;
    }

    public void paint(Graphics g){
        if (ctrl==true){
            g.setColor(Color.blue);
        } else {
            g.setColor(Color.red);
        }
        RandGen();
        g.fillPolygon(x,y,3);   
    }
}

public class MyThread extends Thread{
    ThreadApplet applet;

    public MyThread (ThreadApplet applet){
        this.applet=applet;
    }
    public void run(){
        Thread thisThread = Thread.currentThread();
        while (this==thisThread){           
            applet.repaint();
            try{Thread.sleep(50);}
            catch(InterruptedException e){} 
        }       
    }
}

1 个答案:

答案 0 :(得分:3)

您需要在使用前初始化阵列:

 int x[] = new int[17];

例如。