Sea*_*A91 12 java swing awt mouse-listeners
如何知道mouseDragged事件中按下的按钮?
我遇到了问题,mouseDragged()因为收到的MouseEvent回报为0 getButton().我对鼠标位置没有问题,甚至检测鼠标点击.该mouseClicked()事件返回相应的按钮getButton().
有关如何做到这一点的任何建议?我假设我可以使用mouseClicked,或者mousePressed,但我宁愿将这一切都保留在内mouseDragged.
谢谢你的时间和答案.
Jac*_*hle 21
正如评论和其他答案中所指出的,SwingUtilities为这样的案例提供了三种方法,它们适用于所有MouseEvent:
SwingUtilities.isLeftMouseButton(aMouseEvent);
SwingUtilities.isRightMouseButton(aMouseEvent);
SwingUtilities.isMiddleMouseButton(aMouseEvent);
Run Code Online (Sandbox Code Playgroud)
至于你的方法有什么问题,javadoc getButton()说:
返回哪些鼠标按钮已更改状态(如果有).
由于正在举行,而它向下按钮的状态不改变,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) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
雅各布的权利getButton()不会让你按照设计按钮.但是,我找到了比位操作更清晰的解决方案getModifiersEx(),您也可以在mouseDragged以下内容中使用:
if (SwingUtilities.isLeftMouseButton(theMouseEvent)) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
中间按钮和右按钮存在类似的方法.
| 归档时间: |
|
| 查看次数: |
5666 次 |
| 最近记录: |