0

因此,我正在为数独程序使用 JTextField 的二维数组。

public JTextField[][] userInputArray = new JTextField[9][9];

现在。我得到一个持续的空指针异常,并且无法辨别如何修复它。它来自触发此方法:

    public void showTextFields()
{
    int rowCounter = 0;
    int columnCounter = 0;

    for (rowCounter = 0; rowCounter <= 8; rowCounter += 1)
    {
        for (columnCounter = 0; columnCounter <= 8; columnCounter += 1)
        {
            pane.setLayout(new GridLayout(9, 9));
            //pane.add(userInputArray[rowCounter][columnCounter]);
            //userInputArray[rowCounter][columnCounter].setColumns(1);
            //userInputArray[rowCounter][columnCounter].setVisible(true);
        }
    }
}

注释掉的所有内容都会抛出空指针异常。

理想情况下,我的目标是在屏幕上显示 JTextField,并在网格上分配它们。

NullPointerException 发生在pane.add(...)

4

2 回答 2

3

当您创建了二维数组来容纳您的字段时,您需要实例化JTextField数组中的组件。

for (int i =0; i < userInputArray.length; i++) {
   for (int j =0; j < userInputArray[0].length; j++) {
      userInputArray[i][j] = new JTextField();
   }
}
于 2012-10-26T18:51:55.210 回答
2

当您声明数组时,它会使用默认值进行初始化。默认值Objectnull,因此您需要先实例化对象,然后再使用它们

userInputArray[rowCounter][columnCounter] = new JTextField();

所以现在你的代码应该如下所示

for (columnCounter = 0; columnCounter <= 8; columnCounter += 1)
    {
        pane.setLayout(new GridLayout(9, 9));
        userInputArray[rowCounter][columnCounter] = new JTextField();
        pane.add(userInputArray[rowCounter][columnCounter]);
        userInputArray[rowCounter][columnCounter].setColumns(1);
        userInputArray[rowCounter][columnCounter].setVisible(true);
    }
于 2012-10-26T18:57:36.413 回答