2012-12-13 74 views
2

我有一個for菜單添加menuItems for循環。添加每個菜單項後,我想添加一個actionlistener,所以當在菜單中單擊時,它會從數組中加載相應的索引項。問題是java不允許我從匿名動作監聽器類中調用arraylist.get(i),因爲它必須是最終的。我不能讓我最終,因爲它在每次迭代增加。任何人都可以幫忙嗎?歡呼聲Java - 訪問For循環計數器從內部匿名類

回答

3

爲什麼不提取元素作爲匿名類之外的final引用?

for (int i = 0: i < list.size(); i++) { 
    final elem = list.get(i); 
    // now use it... 
} 

注意這是更安全的原因之一。在原來的解決方案中,您將回到列表中,並且可能會發生更改,以便您的匿名類可以在每個回調中提取不同的對象。在這個變體中,它給出了對實際實例的引用final

+0

非常感謝Thankyou,我被困在這一段時間 –

0

您可以將您的ActionListener實現爲公共類,並在其構造函數中傳遞所需的菜單項。