сделать (массив) actionlistener (s) изменить значение - PullRequest
0 голосов
/ 14 марта 2012

Так что мне нужно вывести «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 Ответ

1 голос
/ 14 марта 2012

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;
    }
  });
}
...