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]);
}
}
我收到的NullPointerException指向grid.setLayout (new GridLayout(6,7,0,0));
部分以及底部主方法中的new GameBoard();
。
我还将grid
面板添加到另一个面板,以及其他面板:
panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add("North", panel1);
panel.add("Center",grid);
panel.add("South",panel2);
add(panel);
我已经初始化了grid和buttonArray [] []。我错过了什么?
答案 0 :(得分:3)
网格变量为空,因为它从未被分配过对象。你需要给它一个新的东西或通过setter方法或构造函数参数传递它的值。
比当前问题的实际解决方案更重要的是了解如何调试最常见的NullPointerExceptions。当你遇到NullPointerException时,你应该仔细检查抛出异常的行上的所有变量,找出哪一个为null,然后在你的程序中追溯,以找出为什么它为null,否则就是。
答案 1 :(得分: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));