无法得到异常的原因。任何人都可以给我一些线索吗?那里的零在哪里?

时间:2014-01-22 15:49:26

标签: java swing nullpointerexception jbutton

static JPanel fieldPanel = new JPanel();

static char cell[][][] = new char[2][12][12];
static JButton jCell[][][] = new JButton[2][12][12];
public void initField(){
    for (int y=1; y<11; y++){
        for (int field=0; field<2; field++ ){
            for (int x=1; x<11; x++){
                cell[field][x][y] = '.';
                jCell[field][x][y].setBounds((x * 20) + (field * 200), y * 20, 15, 15);
                fieldPanel.add(jCell[field][x][y]);
            }
        }
    }
}

最长字符串中的“main”java.lang.NullPointerException中的异常/

4 个答案:

答案 0 :(得分:1)

你需要像下面那样创建JButton然后你可以设置界限。

jCell[field][x][y] = new JButton();
jCell[field][x][y].setBounds((x * 20) + (field * 200), y * 20, 15, 15);

答案 1 :(得分:0)

在你调用jCell[field][x][y]之前,

nulljCell[field][x][y].setBounds(),因此是NullPointerException。

答案 2 :(得分:0)

static JButton jCell[][][] = new JButton[2][12][12];只需创建JButton s的3D引用数组,但是:

  • 未创建JButton
  • 数组中填充了null

然后当您致电jCell[field][x][y].whatYouWant时,您尝试取消引用null

使用按钮初始化jCell数组:

for (i=0; ...
  for (j=0; ...
    for (k=0; ...
      jCell[i][j][k] = new JButton(...);

答案 3 :(得分:0)

Type[] var = new Type[2];

只会在内存中分配空间来容纳2个Type对象,并将每个条目初始化为null。这意味着:

var[0] == null

之后评估为true

因此

var[0].method();

抛出NullPointerException

您需要先初始化数组的每个条目,然后才能对它们进行处理:

jCell[field][x][y] = new JButton(...);
jCell[field][x][y].setBounds(...);

或:

JButton button = new JButton(...);
button.setBounds(...);
jCell[field][x][y] = button;