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
只有一个可能的方法,其中asMouseListener
有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函数实现它。