我創建了一個按鈕陣列 ( JButton[] jb = new JButton[100]),我想為jb陣列中的所有按鈕添加相同的動作偵聽器,而不是一個一個地添加它們。
想象一下,每次我單擊螢屏上顯示的一個按鈕時,它都會列印出該按鈕在jb陣列中的索引。
uj5u.com熱心網友回復:
簡單的答案是肯定的,您可以將相同的偵聽器添加到許多不同的按鈕,并且通過引數偵聽器將能夠確定哪個 Button 實體單擊了它。
挑戰在于您將無法知道陣列中的哪個索引與按鈕匹配,因此您需要:
getLabel根據按鈕中的某些內容(例如它的值)找出它是哪個按鈕- 每次單擊都掃描陣列以找出按鈕實體的索引,這很慢(
O(n)),但對于一百個按鈕可能沒那么重要 - 將按鈕實體到陣列索引的映射存盤在另一種更快的資料結構中,例如 HashMap(
O(1)),如果按鈕沒有很好地定義為可散列,這可能會變得很難看 - 對所有按鈕使用相同的 ActionListener類,但在偵聽器的每個實體上存盤一個欄位,告訴它它映射到哪個索引
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/473179.html
上一篇:為什么這里只畫了一個矩形?
