一个Panel,往里头加Label,居然报空指针,大家来看看:FocusablePanel numberGrid = new FocusablePanel(new GridLayout(6,6));
numberLabels = new JLabel[6][6];
for (int i = 1; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
if(i==5&&j>=3)
{
break;
}
else
{
numberLabels[i][j] = new JLabel(" ", JLabel.RIGHT);
numberLabels[i][j].setForeground(Color.blue);
numberLabels[i][j].setBackground(Color.blue);
numberLabels[i][j].setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
numberLabels[i][j].addMouseListener(this);
}
}
}
numberGrid.addFocusListener(this);
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
if(i==5&&j>=3)
{
break;
}
else
{
numberGrid.add(numberLabels[i][j]);
}
}
}numberGrid.add(numberLabels[i][j]); /这里报错:Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1019)
at java.awt.Container.add(Container.java:351)搞不懂,杂回事哦?
numberLabels = new JLabel[6][6];
for (int i = 1; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
if(i==5&&j>=3)
{
break;
}
else
{
numberLabels[i][j] = new JLabel(" ", JLabel.RIGHT);
numberLabels[i][j].setForeground(Color.blue);
numberLabels[i][j].setBackground(Color.blue);
numberLabels[i][j].setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
numberLabels[i][j].addMouseListener(this);
}
}
}
numberGrid.addFocusListener(this);
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
if(i==5&&j>=3)
{
break;
}
else
{
numberGrid.add(numberLabels[i][j]);
}
}
}numberGrid.add(numberLabels[i][j]); /这里报错:Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1019)
at java.awt.Container.add(Container.java:351)搞不懂,杂回事哦?
.....
for (int i = 0; i < 6; i++)
.....当i==0时,numberLabels[0][0]到numberLabels[0][5]没有创建实例,后面引用的时候,就是 NullPointerException 了
.....
for (int i = 0; i < 6; i++)
或者把后一个改成从1开始
for (int i = 1; i < 6; i++)
.....
for (int i = 1; i < 6; i++)