NullPointerException:在数组中添加JButton&面板

时间:2014-02-08 17:02:44

标签: java arrays swing nullpointerexception jbutton

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 [] []。我错过了什么?

2 个答案:

答案 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));