Java Blackberry按下按钮字段n秒

Java Blackberry按下按钮字段n秒,java,blackberry,Java,Blackberry,我正在开发一个黑莓应用程序。当用户按下一个按钮并保持2秒时,我想在同一屏幕上启动任何操作 无论如何 谢谢对于非触摸屏手机,我不知道有什么方法可以做到这一点 这可以通过覆盖字段的touchEvent()在触摸屏手机上实现。看看检测touchEvent。点击并触摸Event。松开点击和/或触摸手势。悬停-事实上,悬停是我认为你会点击的 假设它是悬停,那么您可以通过获取悬停计数来获得估计值,或者,使用“单击”获取开始时间,并在获得悬停时进行减法,以查看它是否已超过两秒 然而,我有两个顾虑: a) 这和

我正在开发一个黑莓应用程序。当用户按下一个按钮并保持2秒时,我想在同一屏幕上启动任何操作

无论如何


谢谢

对于非触摸屏手机,我不知道有什么方法可以做到这一点

这可以通过覆盖字段的touchEvent()在触摸屏手机上实现。看看检测touchEvent。点击并触摸Event。松开点击和/或触摸手势。悬停-事实上,悬停是我认为你会点击的

假设它是悬停,那么您可以通过获取悬停计数来获得估计值,或者,使用“单击”获取开始时间,并在获得悬停时进行减法,以查看它是否已超过两秒

然而,我有两个顾虑:

a) 这和黑莓手机不太一样——黑莓手机用户不经常使用按压和按住按钮。那么这真的是一个好的用户体验吗

b) 如果字段已经具有一些触摸功能,那么您可能会影响该处理,因此您可能必须非常小心处理什么(返回true)以及传递给super.touchEvent()的内容

更新


请注意另一个答案,该答案建议对非触摸电话使用导航单击/取消单击。我没有想到这一点,也没有测试过,但这似乎是一个不错的选择。甚至可以在触摸屏手机上工作,而不是使用touchEvent,但要注意悬停被驱动

这是在非常非正式的伪代码中需要做的:

    When (click detected)
        Schedule Timer to execute in 2s.

    When (unclick detected)
        Cancel timer
当用户第一次单击计时器时,将对其进行调度。如果用户按下按钮超过2秒,则计时器将运行。否则,当按钮在2秒前释放时,计时器将取消且不会运行。请注意,如果用户在2秒或更晚的时间释放,计时器也可以取消。在这些情况下,这不是问题,因为如果它在运行时被取消,它将被允许完成,如果它在完成后被取消,它将什么也不做

要检测单击/取消单击,您有多种选择。您可以从button类扩展并按建议重写,也可以在
Main屏幕中重写和。由于您需要在每个按钮中执行此操作,因此我宁愿将ButtonField子类化,以启用自定义的单击/取消单击侦听器,从而允许在其他屏幕中重用该类


计时器只是一个常规,您可以在其中安排一个

好的答案,只是想在两秒钟内添加,将生成悬停事件,并且可能会执行我认为通常对按钮字段执行的操作-显示菜单。所以您可能需要抑制这种情况。@PeterStrange现在我们的答案之间有一个循环引用:)