鼠标双击和单击的区别

ansondrew 2002-06-18 02:30:38
双击的动作分解为两次单击。
我在程序中要判断一个按钮的单击双击事件,作出不同的处理。如果只要双击处理,我可以判断击键的count==2,但是如果我要对单击也做处理的话,只能加else if( count==1 )这样的话双击的处理只会被当作单击分开处理

有一种方法区分单击双击,就是每次比较上次鼠标按键的间隔时间,间隔时间小于某个预设置则为单击。问题是:上次按键的时间设为lastClickTime,本次击键的时间为nowClickTime,程序开始时lastClickTime为0, 第一次的双击的第一次按键被误判断为单击,因为nowClickTime-lastClickTime大于预设间隔时间,接下来的击键的判断才是正确的。等待长时间后再进行双击测试,他的第一次按键又被误判断为单击。

我想问区分单击双击的逻辑是怎样的?我觉得我的方法逻辑有问题
...全文
995 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
okyhc 2002-06-19
  • 打赏
  • 举报
回复
加鼠标侦听
ansondrew 2002-06-19
  • 打赏
  • 举报
回复
问题还是没解决!

设单击时做操作A,双击时做操作B。

双击分为两次时间间隔很近的单击事件,他和单击事件的处理不同的地方在于:双击时,它的第一次点击应该不做操作A,等第二次点击时才作操作B。

单击时只做操作A。

按我们的逻辑处理,双击的第一次点击也作为单击处理,即做了操作A了,到第二次点击做操作B 。这就是说,双击时多了一个错误操作A 。
drinkant 2002-06-19
  • 打赏
  • 举报
回复
switch( count )
{ case 1:
click() ;
break ;
case 2:
doubleClick() ;
break ;
default:
}
这样子不行 ?
你的判断时间的逻辑有点不对.
第二次击键存在不确定性,应该在第一次击键后等待若干秒,
这段时间内确实没有第二次击键才认为是单击
如果这样做, 似乎要另开一个线程了, 呵呵, 得不偿失
ansondrew 2002-06-19
  • 打赏
  • 举报
回复
拜托你自己试一试!!!

int count = e.getClickCount();
if(count == 1)
System.out.println("one click");
else if(count == 2)
System.out.println("two click");
else
System.out.println("more click");

双击显示的结果应该是:
one click
two click

如果你很快的点击三下的话结果是:
one click
two click
more click


javalearner 2002-06-19
  • 打赏
  • 举报
回复
to gularess:你那样是想当然,你自己试试看就知道了,双击事件响应前必定会先响应单击事件。
javalearner 2002-06-19
  • 打赏
  • 举报
回复
不判断间隔时间就没有有效的办法区分他们,因为双击的定义就是两次单击,千万别忘了这一点。你没看到windows的鼠标测试就可以设定双击间隔时间来判断两次单击是否能合并成一次双击么?这个问题我在开发中就遇到,我就是用count来解决,没有用时间间隔,我感觉没有必要严格的区分,如果你需要做两种有冲突的操作,那么你可以考虑产生双击的效果前先去处单击的效果。
其实这个问题有点小题大作,没那个必要去研究这个,你个人的学习时间比得到这个问题的完美答案要重要的多了,你说呢?
gularess 2002-06-19
  • 打赏
  • 举报
回复
鼠标时间应该能区分单双击的,否则e.getClickCount()要它干吗?

int count = e.getClickCount();
if(count == 1){}
else if(count == 2){}
else{}

就行了!!
gularess 2002-06-19
  • 打赏
  • 举报
回复
鼠标时间应该能区分单双击的,否则e.getClickCount()要它干吗?

int count = e.getClickCount();
if(count == 1){}
else if(count == 2){}
else{}

就行了!!
ansondrew 2002-06-19
  • 打赏
  • 举报
回复
鼠标侦听:) ,我现在讨论的就是侦听到鼠标有按键事件时的处理
MagicJohn 2002-06-18
  • 打赏
  • 举报
回复
试一下以下的逻辑:
1、初始化设置 模式<>单击或双击
2、有单击事件发生时,设置模式=单击
if 时间超长事件发生时
执行单击
设置 模式<>单击或双击
end if
if 又有单击事件发生时 (既:设置模式=单击)
执行双击
设置 模式<>单击或双击
end if

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧