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

时间:2018-04-18 08:36:55

标签: java arrays jlabel mouselistener actionevent

我目前在这里使用此代码作为鼠标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->{ 有人可以给我任何解决这个问题的提示

由于

1 个答案:

答案 0 :(得分:4)

那么,让我们来看看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(或MouseMotionListener或{MouseWheelListener的所有方法{1}}),所以他们提供了所有这些的“默认”实现,基本上只是创建方法的空实现,MouseAdapter ...

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

好吧,它并非“完全”相同,但它更容易阅读和管理