鼠标事件有延迟,怎么解决?

tengfeng05 2010-12-10 09:04:32
实现了mouselistener的接口,发现mouseReleased和mousePressed事件有延迟,有时候点下去甚至没有反应,但是mouseEntered、mousePressed和mouseExited事件正常。这个问题怎么解决?
...全文
1132 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
tengfeng05 2011-01-07
  • 打赏
  • 举报
回复
我反复测试了,觉得这个问题应该与操作系统和硬件有关。暂时解决不了。结贴给分
Jlins 2010-12-10
  • 打赏
  • 举报
回复
我觉得是你的浏览器的问题
纯净水呐 2010-12-10
  • 打赏
  • 举报
回复
这个大概跟屏幕分辨率和刷新率有关的
sunyiz 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 tengfeng05 的回复:]
这个道理我是知道的。这个延迟给我的感觉就是AWT事件获取线程捕捉事件出了问题,我的程序所有的mouseclicked事件都有延迟,现在还不知道是不是我的代码引起这一系列原因。
另外,我的程序里有很多repaint调用,大家都知道,repaint是线程机制的,会不会是鼠标事件激活了一些受阻塞的重绘线程,使得鼠标事件的捕捉出现了延迟?但我觉得我这个想法很荒诞,功底太差·····[/Quote]

很有可能就是repaint()造成的
所有的repaint()都会占用Swing主线程
大量的repaint()也是很耗时的
tengfeng05 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sunyiz 的回复:]
引用 11 楼 tengfeng05 的回复:
不是这样的。我做过测试,从鼠标点击到生成mouseClicked事件,是这个时间段的延迟。

关于mouseClicked事件可以给你一个提示
这个事件必要鼠标在屏幕上的同一坐标上按下,并弹起后才能触发的
在这个过程中,如果鼠标发生了位移,将不会触发

至于mouseReleased事件,必须是你在这个组件上按下的
如果你在别的地方先……
[/Quote]
这个道理我是知道的。这个延迟给我的感觉就是AWT事件获取线程捕捉事件出了问题,我的程序所有的mouseclicked事件都有延迟,现在还不知道是不是我的代码引起这一系列原因。
另外,我的程序里有很多repaint调用,大家都知道,repaint是线程机制的,会不会是鼠标事件激活了一些受阻塞的重绘线程,使得鼠标事件的捕捉出现了延迟?但我觉得我这个想法很荒诞,功底太差·····
sunyiz 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 tengfeng05 的回复:]
不是这样的。我做过测试,从鼠标点击到生成mouseClicked事件,是这个时间段的延迟。[/Quote]

关于mouseClicked事件可以给你一个提示
这个事件必要鼠标在屏幕上的同一坐标上按下,并弹起后才能触发的
在这个过程中,如果鼠标发生了位移,将不会触发

至于mouseReleased事件,必须是你在这个组件上按下的
如果你在别的地方先按下了鼠标,然后鼠标再移进了这个组件
当你松开时,也不会触发该组件的mouseReleased事件
而反过来,如果你是在这个组件上按下了鼠标,
保持鼠标按下状态,然后将鼠标移出这个组件,然后你再松开鼠标,
将会触发该组件的mouseReleased事件
tengfeng05 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 guo98 的回复:]
mousClicked,,是不是该反应方法的问题,需要占用这么长的处理时间,所以你最好做个提示功能,一但触发mousClicked或者别的事件,弹出一个提示框,“正在......” 这样就不会显得有延迟的感觉
[/Quote]
不是这样的。我做过测试,从鼠标点击到生成mouseClicked事件,是这个时间段的延迟。
guo98 2010-12-10
  • 打赏
  • 举报
回复
mousClicked,,是不是该反应方法的问题,需要占用这么长的处理时间,所以你最好做个提示功能,一但触发mousClicked或者别的事件,弹出一个提示框,“正在......” 这样就不会显得有延迟的感觉
tengfeng05 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 applecyl038 的回复:]
“ 发现mouseReleased和mousePressed事件有延迟,
mouseEntered、mousePressed和mouseExited事件正常。”
mousePressed 这个是正常还是延迟? 是mouseClicked正常吧? 如果mouseClicked正常,那两个应该也正常,检查下代码有没问题。
[/Quote]
说错了,是mouseReleased和mousClicked事件有延迟
mouseEntered、mousePressed和mouseExited事件正常
24K純帥 2010-12-10
  • 打赏
  • 举报
回复
难道是LZ人品没到位么,怎么mousePressed事件延时又不延时的
tengfeng05 2010-12-10
  • 打赏
  • 举报
回复
mouseReleased和mousClicked事件有延迟
mouseEntered、mousePressed和mouseExited事件正常
shengxfcsk 2010-12-10
  • 打赏
  • 举报
回复
test
applecyl038 2010-12-10
  • 打赏
  • 举报
回复
“ 发现mouseReleased和mousePressed事件有延迟,
mouseEntered、mousePressed和mouseExited事件正常。”
mousePressed 这个是正常还是延迟? 是mouseClicked正常吧? 如果mouseClicked正常,那两个应该也正常,检查下代码有没问题。
tengfeng05 2010-12-10
  • 打赏
  • 举报
回复
和浏览器没关吧?是swing开发。发现所有的鼠标释放和点击都有延迟,有时候这个延迟短,看起来就很正常,但有时候估计得鼠标点下去半秒后才有反应。谁有类似的经验?请指教
pywepe 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dyllove98 的回复:]

我觉得是你的浏览器的问题
[/Quote]
怎么联系上了浏览器了?

62,614

社区成员

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

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