2013-07-03 113 views
0

我知道這是很簡單的,但因爲我已經實例化的類,我不明白爲什麼我得到這個異常:當我嘗試運行我的JFrame時,爲什麼會出現NullPointerException?

異常線程「main」顯示java.lang.NullPointerException

在javax.swing.ImageIcon中。(ImageIcon.java:181)

在GameFrame。(GameFrame.java:16)

在GameFrame.main(GameFrame.java:88)

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class GameFrame extends JFrame implements ActionListener{ 
    //Mini games and main panel components 
    private JPanel MainPanel; 
    private JPanel gamePanel1, gamePanel2, gamePanel3, gamePanel4, gamePanel5, gamePanel6, gamePanel7, gamePanel8, gamePanel9; 
    private JPanel[] gamePanels = {gamePanel1, gamePanel2, gamePanel3, gamePanel4, gamePanel5, gamePanel6, gamePanel7, gamePanel8, gamePanel9}; 
    private JButton[][] buttons; 
    private int turn; 

    //X and O images 
    private JLabel X = new JLabel(); 
    private ImageIcon x = new ImageIcon(getClass().getResource("/Images/X.PNG")); 
    private JLabel O = new JLabel(); 
    private ImageIcon o = new ImageIcon(getClass().getResource("/Images/O.PNG")); 


    //constructor  
    public GameFrame() { 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     pack(); 
     //gf.setSize(800,600); 
     setVisible(true); 

     setUpMainPanel(); 
     add(MainPanel); 
    } 

    public void setUpMainPanel() { 
     //sets the layout 
    } 


    public static void main(String[] args) { 
     GameFrame frame = new GameFrame(); 
    } 
} 

我試過做所有的構造函數(例如setVisible(true))在main()中,但我得到相同的錯誤。令人驚訝的是,這方面沒有太多容易找到的信息。爲什麼imageIcon給它一個問題?謝謝你們的幫助!

+0

你從哪裏得到的NPE? – JHS

+2

_easily找到info_是在您的錯誤消息。發佈完整的堆棧跟蹤。 – jlordo

+1

我猜你不需要文件名的前導「/」。 – camickr

回答

4

我的猜測是你的應用程序找不到圖片。

你可以添加一個

System.out.println(getClass().getResource("/Images/X.PNG")); 

,並顯示結果?我想結果會打印'空'。如果是這樣,圖像的位置不正確,例如,前導斜槓可能是錯誤的,或者介意文件或路徑的外殼。

+0

好猜,路徑也必須區分大小寫。 –

+0

我想你可能是對的。我應該在本地URL方面領導什麼?應該是「src/Images/X.PNG」還是什麼? –

+0

用7Zip或WinZip查看生成的.jar文件。可能不是「src」。作爲一個zip文件,區分大小寫的名字是必須的。 –

0

你可以嘗試以下

BufferedImage image = ImageIO.read(getClass().getResource("/Images/X.PNG")); 
    if(image != null) 
     ImageIcon x = new ImageIcon(image); 
0
//X and O images 
    private JLabel X = new JLabel(); 
    //try changing these around; EX: 
    private ImageIcon x = new ImageIcon(getClass().getResource("X.PNG")); 
    private ImageIcon x = new ImageIcon(getClass().getResource("Images/X.PNG")); 
    private JLabel O = new JLabel(); 
    private ImageIcon o = new ImageIcon(getClass().getResource("previousFolder/Images/O.PNG")); 
0

有這 「/Images/X.PNG」 位置沒有圖像。放入/ images目錄的圖像 「X.PNG」

+0

我有一個在那裏。我是日食新手。我應該在哪裏放置圖像目錄?我有我的Java項目,bin,.settings和src文件夾。 –

+0

嘗試把你的圖像到項目文件夾(相同的文件夾,其中是斌,src和.settings)。在代碼中使用'... getResource(「x.png」)'。 – Sk1X1

0

我最終把

X = new JLabel(); 
x = new ImageIcon(getClass().getResource("/Images/X.PNG")); 

O = new JLabel(); 
o = new ImageIcon(getClass().getResource("/Images/O.PNG")); 

public void actionPerformed(ActionEvent e) { 
相關問題