2012-05-28 39 views
0

我試圖解決這個問題,但我有一個無限循環,不知道如何解決這個問題。引導我。我是Java新手。在Applet中生成隨機三角形(動畫)

在終端:

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,以不同顏色顯示隨機生成的三角形。

/////////////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){} 
     }  
    } 
} 
+0

如果您再次遇到NullPointerException,請查看引發它的行,因爲這通常會告訴哪個變量爲null,而該變量不應爲null。如果您仍然無法解決問題並需要我們的幫助,請告訴我們***導致它的行(給它一個明顯的**大**評論),所以我們不必爲了猜猜它是哪一行。 –

回答

3

您需要在使用前進行初始化數組的:

int x[] = new int[17]; 

例如。