[英]Anonymous ActionListener Class Exception “NullPointerException”
在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时会发生编译器错误,
您将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());
}
});
}
您正在使用两个不同的bts1
数组bts
和bts1
。
bts1[i]
。 bts[j]
。 您是否还在某处初始化了bts[j]
? 如果没有,您将遇到NPE。
尝试使用事件源
screen.setText(screen.getText()+((JButton)ae.getSource()).getText());
try this:
for(int i = 0 ;i < bts1.length-1 ; i++){
//rest of your code
}
因为10个元素的数组的元素索引为0到9,而不是0到10。
在您将按钮添加到面板之前。 首先需要为按钮添加监听器。
首先尝试以下代码。
//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]);**
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.