0

だから私は数独プログラムのためにJTextFieldsの2次元配列を使っています。

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

今。継続的にnullポインター例外が発生し、それを修正する方法を識別できません。これは、このメソッドを起動することから生じます。

    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);
        }
    }
}

コメントアウトされたものはすべてnullpointerexceptionをスローします。

最適には、私の目標は、JTextFieldsを画面に表示し、グリッドに割り当てることです。

NullPointerExceptionはで発生しますpane.add(...)

4

2 に答える 2

3

JTextFieldフィールドを格納する2D配列を作成している間に、配列内のコンポーネントをインスタンス化する必要があります。

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

配列を宣言すると、デフォルト値で初期化されます。のデフォルト値は、オブジェクトを使用する前に最初にオブジェクトをインスタンス化する必要Objectがあるためです。null

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 に答える