我想在每次按下按钮时遍历列表,使用JButton,JTextField和event的ActionListener。所以每次" next"按下按钮数组中的下一项应显示在JTextField中。我已经创建了getter,setter和constructor,它实际上只是我遇到麻烦的以下部分。
@Override
public void actionPerformed(ActionEvent evt){
Object source = evt.getSource();
String[] item = getThing();
for(int i = 0; i < 3; i ++){
String currentI = item[i];
}
if(source.equals(btnNxt)){
txtDisplayField.setText(currentI);
}
}
在if语句中,我收到错误&#34;找不到符号&#34;,指的是currentI。
答案 0 :(得分:4)
currentI
变量在循环结束时超出了范围。你应该在for循环之外声明它。
顺便说一句,代码仍然无法正常工作,因为每次都将值设置为数组的最后一项。你应该只走一次,如果你在最后一个项目,跳到第一个。
答案 1 :(得分:1)
您正在currentI
循环范围内初始化String
for
。
因此,在for
循环之外无法访问变量。
在循环中移动等式检查和赋值。
for(int i = 0; i < 3; i ++){
String currentI = item[i];
if(source.equals(btnNxt)){
txtDisplayField.setText(currentI);
// stop iteration as you already found a match
break;
}
}
答案 2 :(得分:0)
我不明白为什么你需要一个for循环。
简单地说:
int ctr = 0;
public void actionPerformed(ActionEvent evt){
ctr++;
if(ctr<item.length)
txtDisplayField.setText(iter[ctr]);
}
这应该可以解决你的问题