我有一个JLabel
的网格。我将它们全部添加到ArrayList中。如何通过迭代将MouseClickListener
添加到所有这些中。
仅此一点:
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 :(得分: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 ));
}
});
答案 1 :(得分:0)
你可以循环遍历ArrayList
的大小并添加每一个,但我建议你制作一个自定义的ADD方法,因为它可以避免以后的循环。
public void addLabel(JLabel label){
label.addMouseListener(yourlistener);
arraylist.add(label);
}
因此,您不必为要添加的每个JLabel调用arraylist.add()
,而是使用addLabel()
添加。
答案 2 :(得分: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);
}
});
}