[英]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.