如何在列表和标签上捕获双击事件

时间:2016-01-07 05:36:25

标签: java codenameone

我的应用程序的主要形式有BorderLayout,并将图片列表添加到其中心。用户可以在列表上滚动查看图片。如果用户双击列表,则删除列表并添加标签,并将当前图片缩放为屏幕大小,并通过标签的setIcon()方法显示。

然后,如果用户在标签上单击,则显示下一张图片。如果用户双击标签,则删除标签并重新添加列表。

如何在列表和标签上捕获双击事件?

谢谢, 威廉

1 个答案:

答案 0 :(得分:1)

您需要避开actionPerformed,因为在第一个指针释放时会立即调用它。

我们正在考虑添加更多内置手势(例如双击),所以这实际上是一个很好的时间来问这个问题。现在唯一的方法是覆盖释放的指针,并在第一次释放时创建一个UITimer(例如300ms),如果发生另一个指针释放,取消计时器并调用"双击"事件。定时器代码只需调用" tap"事件

E.g:

 List l = new List(...) {
       private UITimer timer;
       public void pointerReleased(int x, int y) {
           super.pointerReleased(x, y);
           if(timer == null) {
              timer = UITimer.timer(300, false, getComponentForm(), () -> {
                  singleTapEvent();
                  timer = null;
              });
           } else {
              timer.cancel();
              timer = null;
              doubleTapEvent();
           }
       }
 };