我为我的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已变灰,并说它不会覆盖鼠标的任何方法。超类。

最佳答案

MouseAdapterMouseListenerMosueWheelListenerMouseMotionListener的无操作(空)实现

它旨在使您的生活更轻松,因为您无需实现这些接口定义的每个方法,只需获得一个mouseClicked事件即可。

您将需要分别注册每种类型的实现

MAdapter ma = new MAdapter();
addMouseListener(ma);
addMouseMotionListener(ma);
addMouseWheelListener(ma);

07-26 07:08