问题背景
在使用mouseDragged
处理拖动事件时,如果还想限定是鼠标哪个键,一般会想到以下方法
topBox.addMouseMotionListener(new MouseMotionAdapter() {@Overridepublic void mouseDragged(MouseEvent e) {if (e.getButton() != MouseEvent.BUTTON1) return;...}
});
上面的代码看起来没什么问题,但实际上,mouseDragged
的MouseEvent
事件的getButton
方法只会返回0,也就是MouseEvent.NONBUTTON
,那这可咋整啊?
解决方案
幸好,SwingUtilities
类为我们提供了以下方法,分别准确地判断左、右、中三个键,即使上面的e.getButton()
一直为0,传进来就能准确得到是鼠标哪个键
SwingUtilities.isLeftMouseButton(e);
SwingUtilities.isRightMouseButton(e);
SwingUtilities.isMiddleMouseButton(e);