【发布时间】:2015-12-21 10:10:51
【问题描述】:
我尝试向面板中添加在下面的类中定义的子面板数组,但我得到了java.lang.ArrayIndexOutOfBoundsException:
public class PlayerPanel extends JPanel{
public JPanel[] playerPanelArray;
public PlayerPanel(int nrOfPlayers){
playerPanelArray = new JPanel[nrOfPlayers];
for(int i = 0; i < nrOfPlayers; i++) {
playerPanelArray[i] = new JPanel();
playerPanelArray[i].add(new JButton("See if working"));
add(playerPanelArray[i]);
}
}
}
我仍然不明白为什么我必须初始化 playerPanelArray 两次:
playerPanelArray = new JPanel[nrOfPlayers];
和:
playerPanelArray[i] = new JPanel();
如果我删除第一个,它会给我一个java.lang.NullPointerException。
【问题讨论】:
-
在哪一行出现错误?
-
回答您的第二个问题,
playerPanelArray= new JPanel[nrOfPlayers];仅初始化 数组,而playerPanelArray[i]= new JPanel();初始化数组 内 的每个元素。你可以把数组想象成容器——你只是创建了一个足够大的盒子来放nrOfPlayers元素,但是这些元素在你调用new JPanel()之前不存在,这就是你正在做的在循环内。
标签: java arrays swing nullpointerexception jpanel