0

我有一个JLabels 网格。我将它们全部添加到 ArrayList 中。如何MouseClickListener通过迭代将 s 添加到所有这些中。仅此而已:

    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。当然,这里的坏事是它不能是最终的。

4

3 回答 3

0

您可以循环遍历的大小ArrayList并添加每个,但我建议您制作一个自定义的 ADD 方法来为您完成它,因为它避免了以后的循环。

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

因此,您无需调用arraylist.add()要添加的每个 JLabel,而是使用addLabel().

于 2013-04-10T13:45:15.660 回答
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 ));
    }
});
于 2013-04-10T13:44:53.277 回答
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);
      }
    });
  }
于 2013-04-10T13:50:02.240 回答