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

How do i add a mouseListener to a anonymous JLabel object?

目前我正在使用 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? 
               }
        }
}

这是图片

你可以做类似

的事情而不是那样添加
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 接口,您必须覆盖其中的所有抽象方法。否则无法编译

这是解决方案

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

比在其中添加 mouseClicked 方法。

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

示例:

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

        public void mouseClicked(MouseEvent e) {

            // Your Code Here

        }

    });
    add(l);