Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我不能添加MouseListener(e->;{});?_Java_Arrays_Jlabel_Mouselistener_Actionevent - Fatal编程技术网

Java 为什么我不能添加MouseListener(e->;{});?

Java 为什么我不能添加MouseListener(e->;{});?,java,arrays,jlabel,mouselistener,actionevent,Java,Arrays,Jlabel,Mouselistener,Actionevent,我目前在这里为我的鼠标侦听器使用此代码: public void mousePressed(MouseEvent e) { JLabel labelReference=(JLabel)e.getSource(); if(labelReference.getBackground()==HighLight) { turn^=true; if(turn==true){ labelReference.setBackground(Color.blue);

我目前在这里为我的鼠标
侦听器使用此代码

    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); 
           };
      }     
}
这是可行的,但在将鼠标侦听器添加到所有
jlabel
时,我尝试更改/删除它:

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

            });
但是似乎给了我一个错误,当它是一个
addActionListener(e->{
有人能给我一些修理这个的建议吗


谢谢

< P> >,让我们看看<代码> ActhListNeA//C>和<代码> MouseListener < /C> >…/P>
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);
}
Pjaser[i][j].addMouseListener(new MouseAdapter() {
    @Override
    public void mousePressed(MouseEvent e) {
    }
});
好的,
ActionListener
只有一个可能的方法,其中as
MouseListener
有5个,所以当你这样做的时候

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

});
Java应该调用哪个方法

幸运的是,Java开发人员也有同样的想法,他们不想让ti实现所有的
MouseListener
(或
MouseMotionListener
MouseWheelListener
)方法,所以他们提供了一个“默认值”所有方法的实现,基本上只是创建方法的空实现,
MouseAdapter

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);
}
Pjaser[i][j].addMouseListener(new MouseAdapter() {
    @Override
    public void mousePressed(MouseEvent e) {
    }
});

好吧,它不是“完全”一样,但是它是一个非常容易阅读和管理的景象,因为
MouseListener
没有一个方法,它有几个。但是,你可以使用
MouseAdapter
,它实现了
MouseListener
(和
MouseMotionListener
)的所有方法(使用空白实现)因此,您可以选择想要使用的方法。MouseListener不是一个函数接口(因为它有多个抽象方法)。因此,您无法使用lambda函数实现它。