【问题标题】:JTextField Array issueJTextField 数组问题
【发布时间】:2012-10-26 18:50:08
【问题描述】:

所以我正在为数独程序使用 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(...)

【问题讨论】:

  • 什么是pane?它在哪里定义?包含更多代码。
  • 抱歉,它是容器。

标签: java swing nullpointerexception jtextfield grid-layout


【解决方案1】:

虽然您已经创建了二维数组来容纳您的字段,但您需要在数组中实例化 JTextField 组件。

for (int i =0; i < userInputArray.length; i++) {
   for (int j =0; j < userInputArray[0].length; j++) {
      userInputArray[i][j] = new JTextField();
   }
}

【讨论】:

    【解决方案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);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-28
      • 2013-02-10
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 2018-01-05
      相关资源
      最近更新 更多