2014-02-08 22 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