因此,我需要使用动作侦听器将此循环中的“ 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;
    }
  });
}

10-05 18:29