我有一個JTable,我想在雙擊單元格時調用函數,並在單擊三次單元格時調用另一個函數。Java:檢測三擊而不觸發雙擊
當單元格被三擊時,我不想調用雙擊函數。
我現在所擁有的是(mgrdAlarm是JTable中):
mgrdAlarm.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
System.out.println("getClickCount() = " + e.getClickCount());
if (e.getClickCount()==2)
{
doubleClick();
System.out.println("Completed : doubleClick()");
}
if (e.getClickCount()==3)
{
tripleClick();
System.out.println("Completed : tripleClick()");
}
}
});
當雙擊控制檯顯示:
getClickCount() = 1
getClickCount() = 2
Completed : doubleClick()
當三重點擊控制檯顯示:
getClickCount() = 1
getClickCount() = 2
Completed : doubleClick()
getClickCount() = 3
Completed : tripleClick()
當三擊時,我想控制檯顯示:
getClickCount() = 1
getClickCount() = 2
getClickCount() = 3
Completed : tripleClick()
所以我不想在單元格被三擊時調用doubleClick()函數,但是我想在雙擊單元格時調用函數doubleClick()。
[編輯]
所有回覆建議的解決方案似乎是耽誤雙擊動作,等待一定的時間三擊。
但正如討論的here可能會導致不同類型的問題: 用戶可能已將其雙擊時間設置得相當長,這可能與我的三擊超時重疊。
如果我的雙擊動作是在我的三連擊動作之前執行的,但它確實會產生一些額外的開銷,特別是一些額外的數據流量,我不希望發生這種情況。
作爲迄今爲止唯一的解決方案可能會導致其他問題,這可能實際上比原始問題更糟糕,我將保留現在的狀態。
嗯...延緩執行? –
一個相當有趣的話題,但沒有(如此)很容易解決。您可能想要開始閱讀http://stackoverflow.com/questions/1067464/need-to-cancel-click-mouseup-events-when-double-click-event-detected。單擊和雙擊提供相同的問題。 您需要在代碼中實施一些時間跟蹤。 – devnomore
如何實現自定義EventQueue並檢測一個,兩個或三個點擊這裏? – 1ac0