2016-01-07 89 views
1

我的应用程序的主表单具有BorderLayout,并且图片列表被添加到其中心。用户可以滚动列表来查看图片。如果用户在列表上双击,则删除列表并添加标签,并将当前图片缩放为屏幕尺寸并通过标签的setIcon()方法显示。如何捕获列表和标签上的双击事件

然后,如果用户在标签上单击,则会显示下一张图片。如果用户双击标签,标签将被删除,并且列表被添加回来。

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

感谢, 威廉

回答

1

你需要避免actionPerformed因为这将是第一个指针瞬间释放叫。

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

例如为:

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(); 
      } 
     } 
}; 
+0

感谢晒。它适用于列表和标签,如果timer = null;被添加到计时器代码中(用户只需执行一次敲击,并且此计时器=空;分配将在下次发生事件时重置计时器)。 – William

+0

谢谢,修正了代码。我们应该添加类似于组件本身的东西。 –

相关问题