java - 使 Action 监听器(数组)更改值

标签 java for-loop actionlistener

所以我需要使用 Action 监听器将“i”从该循环中取出并放入该循环之外的变量中(我希望在单击按钮时发生这种情况)... 知道如何做到这一点吗?

ArrayList<Kaart> Thand=uno.gethSpeler().getHand();
for(int i=0;i<Thand.size();i++){
  btnArr[i].setIcon(Thand.get(i).getImg());
  btnArr[i].addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
      iKaart=i;
    }
  });
}

最佳答案

认为你想要这个 - 只需在循环中创建一个final变量,从i获取它的值,以便你可以引用在你的匿名内部类中:

ArrayList<Kaart> thand = uno.gethSpeler().getHand();

for(int i=0; i < thand.size(); i++) {
  final int copy = i;
  btnArr[i].setIcon(thand.get(i).getImg());

  btnArr[i].addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
      iKaart = copy;
    }
  });
}

关于java - 使 Action 监听器(数组)更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9691737/

相关文章:

java - Android 中的 ACTION_TIME_TICK 问题

java - java 小程序错误

c - 如何打印所有这些 block ?

java - 我的老师弄错了这个考试代码吗? (Java,For 循环)

swift - 在 for 循环中使用延迟 -- Swift

java - 制作一个 JButton,在单击鼠标时从 2 个 JTextFields 切换文本

java - 使用函数将文本设置为 Jlabel

java - 是否有必要为每个错误创建用户定义的异常

java - android.database.sqlite.SQLiteException : no such column: bucket_display_name

java - play framework 2.0 中的 Cron Job