我为我的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操作(最后两个)做出反应,而MouseWheelMoved已显示为灰色,并表示它不会覆盖任何超类的方法。
答案 0 :(得分:4)
MouseAdapter
是MouseListener
,MosueWheelListener
和MouseMotionListener
它旨在让您的生活更轻松,因为您不需要实现这些界面定义的每个方法,因此您可以获得mouseClicked
事件
您需要单独注册每种类型的实施
MAdapter ma = new MAdapter();
addMouseListener(ma);
addMouseMotionListener(ma);
addMouseWheelListener(ma);