【问题标题】:Java - Iterate through an array everytime a button is pressedJava - 每次按下按钮时迭代数组
【发布时间】:2015-12-18 04:18:24
【问题描述】:

我想在每次按下按钮时遍历一个列表,使用 JButton、JTextField 和事件的 ActionListener。因此,每次按下“下一个”按钮时,数组中的下一项都应显示在 JTextField 中。我已经创建了 getter、setter 和构造函数,它实际上只是我遇到问题的以下部分。

@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 语句中,我收到一个错误“找不到符号”,指的是 currentI。

【问题讨论】:

    标签: java swing loops button


    【解决方案1】:

    currentI 变量在循环结束时超出范围。您应该在 for 循环之外声明它。

    顺便说一句,代码仍然无法正常工作,因为您每次都将值设置为数组的最后一项。你应该只踩一次,如果你在最后一项,就跳到第一项。

    【讨论】:

      【解决方案2】:

      您正在 for 循环的范围内初始化您的 currentI String

      因此,在 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;
          }
      }
      

      【讨论】:

        【解决方案3】:

        我不明白为什么你需要一个 for 循环。

        简单地说:

        int ctr = 0;
        public void actionPerformed(ActionEvent evt){
          ctr++;
          if(ctr<item.length)
            txtDisplayField.setText(iter[ctr]);
        }
        

        应该可以解决你的问题

        【讨论】:

          猜你喜欢
          • 2022-07-21
          • 2016-02-09
          • 1970-01-01
          • 2010-09-28
          • 1970-01-01
          • 1970-01-01
          • 2021-11-02
          • 2016-02-29
          • 2021-01-11
          相关资源
          最近更新 更多