【问题标题】:How to detect mouse moving while left button down?如何在左键按下时检测鼠标移动?
【发布时间】:2010-12-14 20:18:16
【问题描述】:

我想在按下左键时检测鼠标移动。

我只是创建了一个绘图应用程序。我可以在不按下任何鼠标的情况下检测到鼠标移动。但我想检测鼠标左键按下。

我认为对此没有任何听众。那么,这样做的想法是什么?

【问题讨论】:

    标签: java user-interface swing mouse


    【解决方案1】:
    component.addmouseMotionListener(new MouseAdapter() {
        public void mouseDragged(MouseEvent evt) {
           if ( SwingUtilities.isLeftMouseButton(evt)) {
             // do your stuff here
           }
        }
    });
    

    【讨论】:

    • 我认为没有必要像这样用勺子喂代码。正如您可以从接受的答案中看出的那样,OP 只是希望指向正确的方向。如果需要,OP 可以寻求更多帮助。
    • 有趣的是,当问题指定需要 鼠标按钮时,未提及如何确定按下哪个按钮的答案已被接受。我通过搜索找到了这个问题,我确实需要它是问题中指定的 left 鼠标按钮,所以我赞成这个答案(尽管在撰写本文时 isLeftMouseButton 拼写错误)
    【解决方案2】:

    MouseMotionListener 中有 mouseDragged 方法...查看this 了解更多详情...

    【讨论】:

    • @Stephen P,我不小心点赞了你的评论,因为我看错了。完全没有必要在这里总结 API。这是浪费时间,因为这就是 API 的用途。所有需要的操作都是指向正确的方向。实际上,仅提及类和方法是一个很好的答案。人们应该始终可以访问 API 以了解详细信息。
    • @camickr 保持答案常青是一种很好的做法。这意味着限制链接,因为有一天它们可能会中断,整个答案将变得毫无意义。总的来说,这应该是评论,而不是答案。将答案作为解释而不是指向参考站点和 API 的链接是“堆栈方式”。
    • @CoryB,我想我做这件事的时间比你长一点。 This means limiting links, - 这就是我的评论所建议的。无需包含链接。
    • @camickr 啊,我明白你现在在说什么了。您的第一条评论有点令人困惑。谢谢你的澄清。鉴于您的评论已有 4 年的历史,我更多地为将来可能会阅读此“正确”答案并学习不良做法的新人发表评论。 (此外,使用资历是一种逻辑谬误,不欢迎新人。虽然我很高兴你花时间查找我并做数学。保持优雅,亲爱的。)
    • API 显然没有讨论按钮点击或移动时的按钮状态。这是一个误导性的答案。
    【解决方案3】:

    在您的 MouseMotionListener 中,您可以使用以下方法检查:

    SwingUtilities.isLeftMouseButton(me.getPoint())
    

    你会监听 mouseDragged 事件。

    【讨论】:

    • 你在这里大部分都得到了它,但我只是在我的答案中扩展了
    • @DonHatch,很好。我本来想说好的“点”,但那是错误的 :) 我将保留代码,以便人们可以开玩笑(因为无论如何他们可能会使用 Jeffs 的答案)。
    【解决方案4】:

    我认为可能有某种鼠标拖动监听器,但如果没有......

    捕获鼠标按钮向下和向上事件。在这些事件中,设置一个布尔值,例如 leftButtonIsDown = true(除非已经有一些简单的方法可以查询),然后在鼠标移动事件中使用 if (leftButtonIsDown) 之类的块

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-26
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      相关资源
      最近更新 更多