繁体   English   中英

在Java中实现MouseListener的更简单方法

[英]Easier way to implement MouseListener in Java

我还有一个更一般的问题要问。 当我必须在类中实现MouseListener时,编译器会自动强制我实现MouseListener接口中存在的每个方法。 像这样:

   MouseListener mouseLtnr = new MouseListener()
    {

        @Override
        public void mouseClicked(MouseEvent arg0) {
            // TODO Auto-generated method stub

            counter++;

            xs.add(MouseInfo.getPointerInfo().getLocation().x - getLocationOnScreen().x);
            ys.add(MouseInfo.getPointerInfo().getLocation().y - getLocationOnScreen().y);

            System.out.println(xs.get(counter-1) + " , " + ys.get(counter-1));

            if(flag == false)
            repaint();

        }

        @Override
        public void mouseEntered(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mouseExited(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mousePressed(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mouseReleased(MouseEvent arg0) {
            // TODO Auto-generated method stub

        }

    };

通常,我只需要其中的一两个即可。 有没有一种方法可以仅实现我需要的方法,还是必须处理浪费的代码行? 感谢您的时间。 最好,

陶塔

使用MouseAdapter ,它是一个基本类,它实现MouseListener (以及MosueWheelListenerMouseMotionListener )接口,但是提供所有方法的空白实现,这意味着您可以覆盖所需的方法。

MouseListener mouseLtnr = new MouseAdapter()
{

    @Override
    public void mouseClicked(MouseEvent arg0) {
        // TODO Auto-generated method stub

        counter++;

        xs.add(MouseInfo.getPointerInfo().getLocation().x - getLocationOnScreen().x);
        ys.add(MouseInfo.getPointerInfo().getLocation().y - getLocationOnScreen().y);

        System.out.println(xs.get(counter-1) + " , " + ys.get(counter-1));

        if(flag == false)
        repaint();

    }
 }

如果您稍微研究一下文档,也会发现更多类似的类;)

仅供参考: MouseInfo.getPointerInfo()将返回相对于屏幕而不是生成事件的组件的鼠标光标位置。 您还可以根据需要使用MouseEvent@getXOnScreenMosueEvent@getYOnScreenSwingUtilities#convertPointToScreen(Point, Component) ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM