2013-11-04 87 views
-1

嗨即時新在這裏和Java所以我相信這將是一件簡單的事情,我忽略了,謝謝任何幫助我的主類代碼是在這裏和錯誤代碼s的底部線程「main」中的異常java.lang.NullPointerException

package GameScreen; 

import java.awt.BorderLayout; 
import java.awt.Container; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import javax.swing.JFrame; 


public class GameScreen extends JFrame 
implements Runnable, KeyListener 
{ 
private Thread animation = new Thread(this); 
private Container back = getContentPane(); 
private AniScreen aniscreen = new AniScreen(); 

public GameScreen() 
{ 
    super("moving image"); 
    setBounds(20,20,1024,768); 
    back.add (aniscreen, BorderLayout.CENTER); 
    animation.start(); 
    addKeyListener(this); 

    setVisible (true); 

} 
    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) 
    { 
     GameScreen gameScreen = new GameScreen(); 
    } 

    @Override 
    public void run() 
    { 
     while (true) 
     { 
     aniscreen.repaint(); 
     try 
     { 
      Thread.sleep(30); 
     } 
     catch(InterruptedException ex) 
      { 

      } 
     } 

    } 

    @Override 
    public void keyTyped(KeyEvent e) 
    { 
     } 

    @Override 
    public void keyPressed(KeyEvent e) 
    { 
     if (e.getKeyCode()==KeyEvent.VK_DOWN) 
     { 
     aniscreen.moveplayer(0,50); 
     } 
     if (e.getKeyCode()==KeyEvent.VK_UP) 
     { 
     aniscreen.moveplayer(0,-50); 

     } 

    } 

    @Override 
    public void keyReleased(KeyEvent e) 
    { 
     aniscreen.moveplayer(0,0); 
    } 
} 

這是錯誤代碼:

Exception in thread "main" java.lang.NullPointerException 
    at javax.swing.ImageIcon.<init>(ImageIcon.java:205) 
    at GameScreen.AniScreen.<init>(AniScreen.java:15) 
    at GameScreen.GameScreen.<init>(GameScreen.java:15) 
    at GameScreen.GameScreen.main(GameScreen.java:33) 
Java Result: 1 

這是aniscreen類

package GameScreen; 

import java.awt.Graphics; 
import javax.swing.ImageIcon; 
import javax.swing.JComponent; 


public class AniScreen extends JComponent 
{ 
private int x = 0; 
private int y = 0; 
private int xMovement; 
private int yMovement; 

    private ImageIcon CINEMA = new ImageIcon (getClass().getResource ("CINEMA.jpg")); 
    private ImageIcon survivor = new ImageIcon(getClass().getResource("survivor.jpg")); 
    @Override 
    public void paint (Graphics g) 
    { 
     x = x + xMovement; 
     y = y + yMovement; 
     g.drawImage(CINEMA.getImage(),x,y,100,100,null); 
     g.drawImage(survivor.getImage(),x,y,100,100,null); 
    } 
public void moveplayer (int xmov, int ymov) 
{ 
    xMovement = xmov; 
    yMovement = ymov; 
} 

} 
+1

你有沒有調試過,看看什麼是空? –

+2

AniScreen構造函數失敗。代碼在哪裏? – MadConan

+3

問題出現在AniScreen中,你沒有看到。 – roippi

回答

1

的問題是(最有可能),要麼在這裏發生:

private ImageIcon CINEMA = 
     new ImageIcon (getClass().getResource ("CINEMA.jpg")); 

或在這裏:

private ImageIcon survivor = 
     new ImageIcon(getClass().getResource("survivor.jpg")); 

您所呼叫的ImageIcon構造與null參考。發生這種情況是因爲getResource無法找到您已命名的資源。當發生這種情況時,它將返回null而不是拋出異常。 javadoc解釋了這一點。

相關問題