else if(e.getSource()==button3){
JButton[] addSong = new JButton[50];
JLabel[] label = new JLabel[50];
JPanel[] smallPanel = new JPanel[50];
JPanel panel = new JPanel(new GridLayout(1,50));
for(int i=0;i<50;i++){
addSong[i].setText("+");
label[i].setText("Name of song");
smallPanel[i].add(addSong[i]);
smallPanel[i].add(label[i]);
panel.add(smallPanel[i]);
}
tabs.addTab("All Songs",panel);
}
for循环中的所有语句都给我一个NullPointerException。我是Java = /
的新手答案 0 :(得分:0)
默认情况下,Object
数组中的元素为null
。在尝试调用所有数组的任何操作之前初始化所有数组的元素
for (int i=0; i < 50; i++){
addSong[i] = new JButton();
label[i] = new JLabel();
smallPanel[i] = new JPanel();
...
}
答案 1 :(得分:0)
创建对象数组时,数组中的元素都被初始化为null
。您必须创建对象并将其分配给数组中的元素,然后再访问它并在其上调用方法。
// Before calling a method on the array position...
label[i] = new JLabel();
// Then you can do this...
label[i].setText("Name of song");
其他数组需要将它们的元素初始化为实际对象。
答案 2 :(得分:0)
else if(e.getSource()==button3){
JButton[] addSong = new JButton[50];
JLabel[] label = new JLabel[50];
JPanel[] smallPanel = new JPanel[50];
JPanel panel = new JPanel(new GridLayout(1,50));
for(int i=0;i<50;i++){
addSong[i] = new JButton("+"); // creates a new button with text "+"
label[i] = new JLabel("Name of song"); // creates a new JLabel with text "Name of song"
smallPanel[i] = new JPanel();
smallPanel[i].add(addSong[i]);
smallPanel[i].add(label[i]);
panel.add(smallPanel[i]);
}
tabs.addTab("All Songs",panel);
}
这种行为的原因是因为默认情况下,在一个Object数组中(使用Type []创建,其中Type是JPanel,JButton和JLabel之一)所有记录都是Objects,但为null。
这意味着你正在告诉java“嘿,在这个数组中只有这个对象”,Java知道只有“Object”类型可以进入它的“空格”但不知道是什么类型的对象。
这就是为什么对于数组中的每个“空格”(循环使用for循环),你必须告诉Java“这里去一个新的JButton”(或JPanel,或JLabel)。这就是方法:
arrayName[index] = new Type();