我为我的JPanel编写了一个MouseAdapter,但它的行为很奇怪,这是代码本身,其中包含所有可能的操作以从文档中覆盖。
private class MAdapter extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e){
System.out.println(e.getX()+""+e.getY());
}
@Override
public void mouseReleased(MouseEvent e){
System.out.println(e.getX()+""+e.getY());
}
@Override
public void mouseClicked(MouseEvent e){
System.out.println(e.getX()+""+e.getY());
}
@Override
public void mouseEntered(MouseEvent e){
System.out.println(e.getX()+""+e.getY());
}
@Override
public void mouseExited(MouseEvent e){
System.out.println(e.getX()+""+e.getY());
}
@Override
public void mouseWheelMoved(MouseEvent e){
System.out.println(e.getX()+""+e.getY());
}
@Override
public void mouseMoved(MouseEvent e){
System.out.println(e.getX()+""+e.getY());
}
@Override
public void mouseDragged(MouseEvent e){
System.out.println(e.getX()+""+e.getY());
}
}
问题是:它似乎只对前五个的MouseListener动作做出反应,而对MouseMotionListener的动作(最后2个)不做出反应,而MouseWheelMoved已变灰,并说它不会覆盖鼠标的任何方法。超类。
最佳答案
MouseAdapter
是MouseListener
,MosueWheelListener
和MouseMotionListener
的无操作(空)实现
它旨在使您的生活更轻松,因为您无需实现这些接口定义的每个方法,只需获得一个mouseClicked
事件即可。
您将需要分别注册每种类型的实现
MAdapter ma = new MAdapter();
addMouseListener(ma);
addMouseMotionListener(ma);
addMouseWheelListener(ma);