为什么我不能做 addMouseListener(e ->{ });?

Why cant i do addMouseListener(e ->{ });?

我目前在这里为我的鼠标使用此代码listener:

    public void mousePressed(MouseEvent e) {

JLabel labelReference=(JLabel)e.getSource();
    if(labelReference.getBackground()==HighLight) {
    turn^=true;
    if(turn==true){
       labelReference.setBackground(Color.blue);
       }; 
       if(turn==false){
           labelReference.setBackground(Color.red); 
           };
      }     
}

这行得通,但我正在尝试更改/删除它,以便将我的鼠标侦听器添加到所有 JLabels:

Pjaser[i][j].addMouseListener(e ->{

            });

但似乎给我一个错误,当它是 addActionListener( e->{ 时这似乎工作正常 有人可以给我任何解决此问题的提示吗

谢谢

那么,让我们来看看 ActionListenerMouseListener...

public interface ActionListener extends EventListener {
    /**
     * Invoked when an action occurs.
     */
    public void actionPerformed(ActionEvent e);

}

public interface MouseListener extends EventListener {

    /**
     * Invoked when the mouse button has been clicked (pressed
     * and released) on a component.
     */
    public void mouseClicked(MouseEvent e);

    /**
     * Invoked when a mouse button has been pressed on a component.
     */
    public void mousePressed(MouseEvent e);

    /**
     * Invoked when a mouse button has been released on a component.
     */
    public void mouseReleased(MouseEvent e);

    /**
     * Invoked when the mouse enters a component.
     */
    public void mouseEntered(MouseEvent e);

    /**
     * Invoked when the mouse exits a component.
     */
    public void mouseExited(MouseEvent e);
}

好的,所以 ActionListener 只有一种可能的方法,而 MouseListener 有 5 种方法,所以当你这样做时...

Pjaser[i][j].addMouseListener(e ->{

});

Java应该调用哪个方法?

幸运的是你(和我们其他人),Java 开发人员也有同样的感受,他们不想让我实现 MouseListener(或 MouseMotionListenerMouseWheelListener),因此他们提供了所有这些方法的 "default" 实现,基本上只是创建方法的空实现,MouseAdapter...

Pjaser[i][j].addMouseListener(new MouseAdapter() {
    @Override
    public void mousePressed(MouseEvent e) {
    }
});

好吧,它 "exactly" 不一样,但它更易于阅读和管理