如何将mouseListener添加到匿名JLabel对象?

时间:2015-06-07 15:39:56

标签: java swing awt jlabel mouselistener

目前我正在使用for循环用1-31

中的数字填充JPanel

所以基本上,我想要做的就是如果我说点击数字1,它会显示

System.out.println(1);

以下是代码:

     public class MonthPanel extends JPanel implements MouseListener {

        public MonthPanel() {
            setLayout(new GridLayout(6,7));
            // Add headers
                // Use for-each loop.
                for (String header : headers) {
                  add(new JLabel(header));
                }

                for (int i = 1; i < 31; i++) {
                  add(new JLabel(String.valueOf(i)));
                }

            addMouseListener(this);
        }

    public void mouseClicked(MouseEvent e) {
            // What should i do in here to get a specific JLabel? 
               }
        }
}

这是图片

enter image description here

2 个答案:

答案 0 :(得分:3)

这是解决方案

首先你必须在标签中添加mouselistener,它应该在括号中包含鼠标适配器,因为你只想使用鼠标点击方法。

在其中添加mouseClicked方法。

然后在mouseClicked方法中添加代码。

示例:

    JLabel l = new JLabel("label");
    l.addMouseListener(new MouseAdapter() {

        public void mouseClicked(MouseEvent e) {

            // Your Code Here

        }

    });
    add(l);

答案 1 :(得分:2)

而不是像你那样添加你可以做的事情

for (String header : headers) {
      JLabel lbl = new JLabel(header);
      lbl.addMouseListener(add ur listner);
      add(lbl);
}

在mouseClicked事件中,您可以获取JLabel并按如下方式打印其文本

public void mouseClicked(MouseEvent e) {
    System.out.println(((JLabel) e.getSource()).getText());
}

在代码中,如果实现MouseListener接口,则必须覆盖其中的所有抽象方法。否则它将无法编译