正如评论和其他答案中所指出的,SwingUtilities 为这种情况提供了三种方法,它们应该适用于所有 MouseEvents:
SwingUtilities.isLeftMouseButton(aMouseEvent);
SwingUtilities.isRightMouseButton(aMouseEvent);
SwingUtilities.isMiddleMouseButton(aMouseEvent);
至于你的方法有什么问题,javadocgetButton()
说:
返回哪个鼠标按钮(如果有)已更改状态。
由于按钮的状态在按住时不会改变,因此通常getButton()
会返回NO_BUTTON
. mouseDragged
要检查按钮和修饰符(如Ctrl,Alt等)的状态mouseDragged
,您可以使用getModifiersEx()
. 例如,以下代码检查BUTTON1
已关闭但未关闭BUTTON2
:
int b1 = MouseEvent.BUTTON1_DOWN_MASK;
int b2 = MouseEvent.BUTTON2_DOWN_MASK;
if ((e.getModifiersEx() & (b1 | b2)) == b1) {
// ...
}