2014-02-08 64 views
0
JButton buttonArray[][] = new JButton [6][7]; 
JPanel grid; 
JButton b1; 


grid.setLayout (new GridLayout(6,7,0,0)); 

    slot = new ImageIcon ("gameboard.png"); 

    for (int i = 0; i < 6; ++i) 
    { 
     for (int j = 0; j < 7; ++j) 
     { 
      b1 = new JButton (slot); 
      buttonArray[i][j] = b1; 
      buttonArray[i][j].setContentAreaFilled (false); 
      buttonArray[i][j].setBorderPainted (false); 
      grid.add(buttonArray[i][j]); 
     } 
    } 

添加Jbutton將我正在指向該grid.setLayout (new GridLayout(6,7,0,0));部分和所述new GameBoard();其是在底部的主要方法一個NullPointerException。的NullPointerException:在陣列&面板

我添加grid面板噸ö另一個面板,以及,與其它面板一起:

panel = new JPanel(); 
     panel.setLayout(new BorderLayout()); 
     panel.add("North", panel1); 
     panel.add("Center",grid); 
     panel.add("South",panel2); 
     add(panel); 

我沒有初始化網格和buttonArray [] []已經。我錯過了什麼?因爲它從未被分配一個對象

+0

你缺少一個'網格=新...'某處... – assylias

+0

你在哪裏初始化'grid'?你沒有顯示。如果你不是,那麼大概它仍然有一個'null'值... –

+0

我初始化了構造函數外的所有東西 – user3026693

回答

3

網格變量爲空。您需要可以給它一個新的東西,或通過setter方法或構造函數的參數在它的值傳遞。

比實際的解決您當前的問題更重要的,是如何調試最常見的NullPointerExceptions的知識。當你遇到一個NullPointerException,你應該仔細檢查拋出異常的行所有的變量,找出哪一個爲空,然後跟蹤回你的程序,找出爲什麼它的空當你雖然並非如此。

+0

感謝我能解決這個問題,我想我只需要編寫一個有點清潔 – user3026693

+0

@ user3026693:見編輯回答。學習調試NPE是一項必要的技能,因爲您將來會遇到許多這樣的技能。 –

3

你沒有初始化的變量grid

JPanel grid; // null since it wasn't initialized 
JButton b1; 

grid.setLayout (new GridLayout(6,7,0,0)); 

你應該只創建一些對象有:

JPanel grid = new JPanel(); 
JButton b1; 


grid.setLayout (new GridLayout(6,7,0,0)); 
+0

嗯,這是頗爲尷尬,我應該通過我的代碼看起來進一步和更仔細,但感謝你的答案! – user3026693