1
我的应用程序的主表单具有BorderLayout,并且图片列表被添加到其中心。用户可以滚动列表来查看图片。如果用户在列表上双击,则删除列表并添加标签,并将当前图片缩放为屏幕尺寸并通过标签的setIcon()方法显示。如何捕获列表和标签上的双击事件
然后,如果用户在标签上单击,则会显示下一张图片。如果用户双击标签,标签将被删除,并且列表被添加回来。
如何在列表和标签上捕获双击事件?
感谢, 威廉
我的应用程序的主表单具有BorderLayout,并且图片列表被添加到其中心。用户可以滚动列表来查看图片。如果用户在列表上双击,则删除列表并添加标签,并将当前图片缩放为屏幕尺寸并通过标签的setIcon()方法显示。如何捕获列表和标签上的双击事件
然后,如果用户在标签上单击,则会显示下一张图片。如果用户双击标签,标签将被删除,并且列表被添加回来。
如何在列表和标签上捕获双击事件?
感谢, 威廉
你需要避免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();
}
}
};
感谢晒。它适用于列表和标签,如果timer = null;被添加到计时器代码中(用户只需执行一次敲击,并且此计时器=空;分配将在下次发生事件时重置计时器)。 – William
谢谢,修正了代码。我们应该添加类似于组件本身的东西。 –