Java 降低鼠标点击检测的灵敏度

Java 降低鼠标点击检测的灵敏度,java,swing,awt,mouseevent,mouse-listeners,Java,Swing,Awt,Mouseevent,Mouse Listeners,多年来,我在AWT和基于Swing的界面上反复遇到这个问题:一些鼠标点击事件不会触发鼠标在鼠标侦听器中的鼠标点击,因为鼠标在点击过程中至少移动了一个像素(这是一些鼠标的大多数点击)。这被解释为拖动操作。 有没有一种方法可以告诉AWT/Swing在定义点击时更为宽容 如果您想要一个完整的解决方案(例如,如果您的组件还必须处理拖动操作),则手动实现解决方案相当麻烦: 向每个组件添加唯一的MouseListener和MouseMotionListener 对鼠标移动、鼠标标记和鼠标释放中的点击进行某种

多年来,我在AWT和基于Swing的界面上反复遇到这个问题:一些鼠标点击事件不会触发鼠标在鼠标侦听器中的鼠标点击,因为鼠标在点击过程中至少移动了一个像素(这是一些鼠标的大多数点击)。这被解释为拖动操作。 有没有一种方法可以告诉AWT/Swing在定义点击时更为宽容

如果您想要一个完整的解决方案(例如,如果您的组件还必须处理拖动操作),则手动实现解决方案相当麻烦:

  • 向每个组件添加唯一的MouseListener和MouseMotionListener
  • 对鼠标移动、鼠标标记和鼠标释放中的点击进行某种计算(需要测量经过的时间、移动的距离…)
  • 将“固定”鼠标事件转发到由组件实现的新鼠标输入接口
  • 一定有更好的办法!我希望有一个全球性的环境,但我就是找不到一个

    相关职位

    尝试使用以下方法设置D&D的灵敏度:

    System.setProperty("awt.dnd.drag.threshold", "5");
    
    注意:这仅适用于列表、表格、文本和树组件!
    请参阅
    javax.swing.plaf.basic.DragRecognitionSupport#mouseDragged()
    方法的用法。

    有三种方法:AWTEventListener、MouseInfo、从SwingUtilities@mKorbel我不能把这些和我的问题联系起来。再一次,我不想实现一个定制的点击检测器。
    再一次,我不想
    ==有趣的,阅读鼠标任何API,用修饰符进行测试,比较鼠标事件(对于Java版本>1.6_030/1.7_30)和API,其余的都在一些Java论坛上的错误游行中,然后回叫:-)相关:嗯。。您的问题是不是没有点击或拖动?不是他们,我有一个解决方案,只是为了澄清一下:-)我猜第一个是一个操作系统属性,您不能从java/swing/awt中更改它,除了它似乎不会影响鼠标侦听器之外,我可以确认这一点,因为我在32x32 JPanel中使用“System.setProperty(“awt.dnd.drag.threshold”,“100”)”不断丢失鼠标侦听器上的单击。考虑到mouseClicked MouseeEvent是MousedRaggestureRecognitor类的一个方法细节,我猜这是一件奇怪的事情?这完美地解决了我的问题,谢谢。当它最初“似乎不起作用”时,我最终发现有人的代码正在覆盖mousePressed MouseEvent中的x&y以转换坐标(而不是先复制事件),没有意识到这是在覆盖MouseDraggestureRecognitor最终使用的事件。纠正这一点,一切正常。可以通过在WMouseDragGestureRecognizer mousePressed和mouseDragged中设置断点来验证此属性是否正常运行。