问题描述
针对这个接口的说明文档是/***Sentwhenthemousepointerhovers(thatis,stopsmoving*foran(operatingsystemspecified)periodoftime)over*acontrol.**@parameaneventcontaininginformationaboutthehover*/我想知道这个悬停时间我可以自己在程序中设置么?
解决方案
解决方案二:
估计这个要研究一下源码才能知道吧。
解决方案三:
mouseHover(MouseEvente)Sentwhenthemousepointerhovers(thatis,stopsmovingforan(operatingsystemspecified)periodoftime)overacontrol.mouseHover这个鼠标悬停后激活时间的接口,其中的悬停时间可以在操作系统哪里进行设置啊。?另外,我可以自己在程序中进行设置吗?
解决方案四:
不是写了是operatingsystemspecified吗?那应该就是操作系统的设置吧,比这个时间慢还是可以自己实现,但要比这个时间快应该做不到吧,除非你去改操作系统的设置。
解决方案五:
引用3楼vnvlyp的回复:
不是写了是operatingsystemspecified吗?那应该就是操作系统的设置吧,比这个时间慢还是可以自己实现,但要比这个时间快应该做不到吧,除非你去改操作系统的设置。
比这个时间慢要通过什么方法设置啊?
解决方案六:
你这个是哪里的API?这一套API应该提供配置功能吧,或者有源码的话你看看源码是怎么写的。
解决方案七:
引用5楼vnvlyp的回复:
你这个是哪里的API?这一套API应该提供配置功能吧,或者有源码的话你看看源码是怎么写的。
解决方案八:
SWT默认的Hover时间间隔已经很好了吧。。我看了一下貌似没有发现提供设置时间的,如果还要短,我只能想到监测MouseMove事件,如果一段时间内没有移动鼠标,就触发Hover。
解决方案九:
不是吧,时间一点也不好啊。每次鼠标挪上去,马上就触发事件了。我想将时间设置的长一点。大概停留三秒调用监听事件。
解决方案十:
哦你是要慢一点。。我以为你还要更快慢的话方法应该很多,有个简单点的办法,当触发Hover事件后,设置一个Boolean标识为false,然后sleep一下,如果这段时间有mouseMove事件,那么把那个标识设为true,sleep结束后检查那个标识,如果为false表面一直悬停在这,就可以继续响应事件,你通过控制sleep的时间就可以达到延迟的效果。
解决方案十一:
写了一个例子importorg.eclipse.swt.SWT;importorg.eclipse.swt.widgets.Display;importorg.eclipse.swt.widgets.Event;importorg.eclipse.swt.widgets.Listener;importorg.eclipse.swt.widgets.Shell;publicclassSWTTest{privatestaticbooleanmoved;publicstaticvoidmain(String[]args){Displaydisplay=newDisplay();Shellshell=newShell(display);shell.addListener(SWT.MouseMove,newListener(){@OverridepublicvoidhandleEvent(Eventevent){moved=true;}});shell.addListener(SWT.MouseHover,newListener(){@OverridepublicvoidhandleEvent(Eventevent){moved=false;newThread(){@Overridepublicvoidrun(){try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace();}if(!moved){System.out.println("Hover");}}}.start();}});shell.open();while(!shell.isDisposed()){if(!display.readAndDispatch()){display.sleep();}}display.dispose();}}
解决方案十二:
引用10楼vnvlyp的回复:
写了一个例子importorg.eclipse.swt.SWT;importorg.eclipse.swt.widgets.Display;importorg.eclipse.swt.widgets.Event;importorg.eclipse.swt.widgets.Listener;importorg.eclipse.swt.widgets.Shell;publicclassSWTTest{privatestaticbooleanmoved;publicstaticvoidmain(String[]args){Displaydisplay=newDisplay();Shellshell=newShell(display);shell.addListener(SWT.MouseMove,newListener(){@OverridepublicvoidhandleEvent(Eventevent){moved=true;}});shell.addListener(SWT.MouseHover,newListener(){@OverridepublicvoidhandleEvent(Eventevent){moved=false;newThread(){@Overridepublicvoidrun(){try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace();}if(!moved){System.out.println("Hover");}}}.start();}});shell.open();while(!shell.isDisposed()){if(!display.readAndDispatch()){display.sleep();}}display.dispose();}}
sleep这个暴力不好吧。软件的其他东西还在运行,你这么sleep,那不是坑?