【发布时间】:2014-04-14 16:44:23
【问题描述】:
多年来,我在使用基于 AWT 和 Swing 的界面时反复遇到此问题:某些鼠标单击事件不会触发 MouseListener 中的 mouseClicked,因为在单击期间鼠标移动了至少一个像素(这是一些鼠标的大多数单击)。这被解释为拖动操作。 有没有办法告诉 AWT/Swing 对点击的定义更加宽容?
如果您想要一个完整的解决方案(例如,如果您的组件还必须处理拖动操作),手动实施解决方法会非常麻烦:
- 为每个组件添加唯一的 MouseListener 和 MouseMotionListener
- 在 mouseMoved、mouseDragged 和 mouseReleased 中进行某种点击计算(这需要测量经过的时间、经过的距离...)
- 将“固定”鼠标事件转发到组件实现的新鼠标输入接口
一定有更好的方法!我希望有一个全局设置,但我找不到...
相关帖子
【问题讨论】:
-
有AWTEventListener、MouseInfo、SwingUtilities转换Point三种方式
-
@mKorbel 我无法将这些与我的问题联系起来。同样,我不想实现自定义点击检测器。
-
Again, I DON'T want to== 有趣,阅读 MouseWhatever API,使用修饰符进行测试,将 mouse_events(Java 版本 >1.6_030/1.7_30)与 API 进行比较,其余部分在一些 Java 的 Bug Parade 中论坛,然后回电:-) -
hmm ..您的问题是不是接收点击或开始拖动?不是他们我有任何解决方案,只是为了澄清:-) 我的猜测是第一个是你不能在 java/swing/awt 中更改的操作系统属性。
标签: java swing awt mouseevent mouse-listeners