2012-03-13 83 views
0

所以我需要把這個循環放到這個循環之外的變量中(我希望這會在點擊按鈕時發生)使用動作-listener ... 任何想法如何對此?make(array of)actionlistener(s)change value

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

什麼你的意思是「把這個循環放在變量之外」?這不太清楚你的意思。我會*嘗試*回答,但... – 2012-03-13 20:40:49

回答

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

謝謝,容易回答一個複雜的問題。 – 2012-03-13 20:47:24

+0

或者,監聽器可能是一個非索引型內部類,它將索引作爲構造函數參數。 – 2012-03-13 22:31:26