2013-04-10 36 views
0

我有一個網格JLabel s。我將它們全部添加到ArrayList中。我如何通過迭代將MouseClickListener s全部添加到它們中。 單獨的東西的行:如何將偵聽器動態添加到調用方法的JLabels的數組列表中

for (int i=0;i<145;i++) 
    jLAL.get(i).addMouseListener(new java.awt.event.MouseAdapter() { 
     public void mouseClicked(java.awt.event.MouseEvent evt) { 
      jLabelMouseClicked(evt, jLAL.get(i)); 
     } 
    }); 

jLAL是一個JLabel ArrayList。這裏的壞事當然是不可能是最終的。

回答

0

如果BlackBox解決方案無法在您的代碼中實現,只需創建一個方法來添加偵聽器,其中JLabel將是最終的。

for (int i=0;i<145;i++) { 
     addListener(jLAL.get(i)); 
    } 
    } 

    private void addListener(final JLabel jLabel) { 
    jLabel.addMouseListener(new java.awt.event.MouseAdapter() { 
     public void mouseClicked(java.awt.event.MouseEvent evt) { 
     jLabelMouseClicked(evt, jLabel); 
     } 
    }); 
    } 
0

嘗試:

for (int i=0;i<jLAL.size();i++) 
final int temp = i; 
jLAL.get(i).addMouseListener(new java.awt.event.MouseAdapter() { 
    public void mouseClicked(java.awt.event.MouseEvent evt) { 
     jLabelMouseClicked(evt, jLAL.get(temp)); 
    } 
}); 
0

你可以只通過ArrayList的大小循環,並添加每個人,但我建議你做這會爲你,因爲它避免了後來的循環自定義添加方法。

public void addLabel(JLabel label){ 
    label.addMouseListener(yourlistener); 
    arraylist.add(label); 
} 

,這樣不是調用arraylist.add()您要添加的每個JLabel的,您可以添加與addLabel()

相關問題