2012-03-13 8 views
0

このループの外にある変数にこのループの "i"を入れる必要があります(ボタンをクリックしたときにこのようにしたい) -listener ... これはどのように考えていますか?アクションリストの作成(配列)actionlistener(s)変更値

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

私はあなたがこれが欲しい考える- あなたは匿名内部クラスでそれを参照することができるようにだけ、iから値を取って、ループ内final変数を作成:

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; 
    } 
    }); 
} 
+0

、ありがとう、複雑な質問のための簡単な答え。 –

+0

リスナーは、インデックスをコンストラクタの引数として取る非匿名の内部クラスである可能性があります。 –

関連する問題