为什么我不能做 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->{
时这似乎工作正常
有人可以给我任何解决此问题的提示吗
谢谢
那么,让我们来看看 ActionListener
和 MouseListener
...
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
),因此他们提供了所有这些方法的 "default" 实现,基本上只是创建方法的空实现,MouseAdapter
...
Pjaser[i][j].addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
}
});
好吧,它 "exactly" 不一样,但它更易于阅读和管理
我目前在这里为我的鼠标使用此代码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->{
时这似乎工作正常
有人可以给我任何解决此问题的提示吗
谢谢
那么,让我们来看看 ActionListener
和 MouseListener
...
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
),因此他们提供了所有这些方法的 "default" 实现,基本上只是创建方法的空实现,MouseAdapter
...
Pjaser[i][j].addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
}
});
好吧,它 "exactly" 不一样,但它更易于阅读和管理