我正在使用 Java Swing 处理 GUI 应用程序中的一些 MouseEvent。
从现在开始我正在分析 mousePressed 方法中的鼠标事件,只是为了确定是否
发生左键或右键单击。
我的代码是:
public void mousePressed(MouseEvent me) {
if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK){
//left click
}else if (me.getModifiers == InputEvent.BUTTON3_DOWN_MASK){
//right click
}
现在我的应用程序变得更加复杂,我还需要检查鼠标左键单击时是否按下了 Shift 按钮。
我想做这样的事情:
public void mousePressed(MouseEvent me) {
if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK && me.isShiftDown()){
//left click
}
现在这行不通了。特别是如果我在按住 SHIFT 的同时单击左侧按钮 isShiftDown 返回 true (正确。我期待如此),但现在似乎修饰符也发生了更改,并且与 BUTTON1_DOWN_MASK 的比较失败。
me.getModifiers == InputEvent.BUTTON1_DOWN_MASK //failed..modifiers are changed
我究竟做错了什么?我该如何修复我的代码?
请注意,该方法称为 getModifier_s_(),带有“s”,因为它可以返回多个修饰符,并使用按位“或”组合。从技术上讲,使用“==”永远是不正确的:您应该使用按位“&”,如下所示:
if ((me.getModifiers() & InputEvent.BUTTON1_DOWN_MASK) != 0) ...
那么即使存在其他修饰符,您也会对该修饰符做出反应。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)