在for循环中,我想
初始化JButtons [] bts。
将按钮添加到面板pan3中。
向每个JButton添加一个ActionListener。
这是我到目前为止所拥有的:
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());
}
});
}