我尝试向面板添加在下面的类中定义的子面板数组,但我得到一个 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
。
最佳答案
您的第一个语句告诉编译器分配一个包含 JPanel 的 nrOfPlayers
数组。但没有一个元素被分配,它们都包含 null
。
第二条语句使用新的 JPanel 初始化每个元素,并将它们的引用放在之前分配的位置。如果你不先分配数组,引用就无处可放。
关于java - 如何创建 JPanel vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34393204/