我目前在这里使用此代码作为鼠标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->{
有人可以给我任何解决这个问题的提示
由于
答案 0 :(得分:4)
那么,让我们来看看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
的所有方法{1}}),所以他们提供了所有这些的“默认”实现,基本上只是创建方法的空实现,MouseAdapter
...
Pjaser[i][j].addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
}
});
好吧,它并非“完全”相同,但它更容易阅读和管理