make(array of)actionlistener(s)更改值

时间:2012-03-13 20:38:57

标签: java for-loop actionlistener

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

1 个答案:

答案 0 :(得分:1)

我想你想要这个 - 只需在循环中创建一个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;
    }
  });
}