问题背景

在使用mouseDragged处理拖动事件时,如果还想限定是鼠标哪个键,一般会想到以下方法

topBox.addMouseMotionListener(new MouseMotionAdapter() {
    @Override
    public void mouseDragged(MouseEvent e) {
        if (e.getButton() != MouseEvent.BUTTON1) return;
        ...
    }
});

上面的代码看起来没什么问题,但实际上,mouseDraggedMouseEvent 事件的getButton方法只会返回0,也就是MouseEvent.NONBUTTON,那这可咋整啊?

解决方案

幸好,SwingUtilities类为我们提供了以下方法,分别准确地判断左、右、中三个键,即使上面的e.getButton()一直为0,传进来就能准确得到是鼠标哪个键

SwingUtilities.isLeftMouseButton(e);
SwingUtilities.isRightMouseButton(e);
SwingUtilities.isMiddleMouseButton(e);
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐