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
謝謝,修正了代碼。我們應該添加類似於組件本身的東西。 –