加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 检测MouseEvent上的Shift修改器,它是从swing中单击生成

发布时间:2020-12-14 05:45:24 所属栏目:Java 来源:网络整理
导读:我正在使用 Java Swing在GUI应用程序中处理一些MouseEvent. 从现在开始我在mousePressed方法中分析鼠标事件,只是为了确定是否 发生了左键或右键. 我的代码是: public void mousePressed(MouseEvent me) { if (me.getModifiers == InputEvent.BUTTON1_DOWN_M
我正在使用 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(rigth.我期待的是),但现在似乎修改器也被更改并且与BUTTON1_DOWN_MASK的比较失败.

me.getModifiers == InputEvent.BUTTON1_DOWN_MASK //failed..modifiers are changed

我究竟做错了什么?我该如何修复我的代码?

解决方法

请注意,该方法称为getModifier_s_(),带有“s”,因为它可以返回多个修饰符,使用按位“或”组合.从技术上讲,使用“==”永远不正确:你应该使用按位“&”,如下所示:
if ((me.getModifiers() & InputEvent.BUTTON1_DOWN_MASK) != 0) ...

然后你会回应那个修饰符,即使其他修饰符存在.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读