在for循环中,我想要
这是我到目前为止所得到的:
for(int i = 0 ;i < bts1.length ; i++){
bts1[i] = new JButton(""+i);
pan3.add(bts1[i]);
//The NullPointerException happens after this line .
bts[i].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
int j = 0 ;
screen.setText(screen.getText()+bts[j].getText());
j++;
}
});
}
我的问题是如何解决NullPointerException的? 注释 对于j我添加它因为当我尝试使用i时,会发生编译错误,
答案 0 :(得分:1)
您已将JButton
初始化为bts1
并将其称为bts
。我认为这导致了错误
此外,
将int i=0;
声明为全局范围和for(i = 0 ;i < bts1.length ; i++)
,然后您可以使用i
代替j
。
或者使用如下:
for(int i = 0 ;i < bts1.length ; i++){
bts1[i] = new JButton(""+i);
pan3.add(bts1[i]);
final int j=i;
bts1[i].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
screen.setText(screen.getText()+bts1[j].getText());
}
});
}
答案 1 :(得分:1)
您正在使用两个不同的JButton阵列,bts
和bts1
。
bts1[i]
。 bts[j]
。您是否在某处初始化了bts[j]
?如果没有,你会遇到NPE。
答案 2 :(得分:1)
尝试使用事件源
screen.setText(screen.getText()+((JButton)ae.getSource()).getText());
答案 3 :(得分:0)
try this:
for(int i = 0 ;i < bts1.length-1 ; i++){
//rest of your code
}
由于10个元素的数组具有索引0到9的元素,而不是0到10。
答案 4 :(得分:0)
将按钮添加到面板之前。您需要先为按钮添加Listener。
首先尝试使用以下代码。
//The NullPointerException happens after this line .
bts[i].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
int j = 0 ;
screen.setText(screen.getText()+bts[j].getText());
j++;
}
});
**pan3.add(bts1[i]);**