我想知道在組件中雙擊鼠標時我們如何執行操作。確定在java中雙擊
回答
public void mouseClicked(MouseEvent event)
{
if (event.getClickCount() == 2) {
System.out.println("double clicked");
}
}
假設你在Swing的意思是,一個MouseListener的分配給您的組件:
addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
if(e.getClickCount()==2){
// your code here
}
}
});
參考:
的如果你想允許你的用戶在短時間內做多次雙擊,這是不夠的。 您受桌面配置的限制。 您可以通過查看的Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval");
的一個好方法,結果繞開的問題得到它是不使用getClickCount()
檢查,但使用Timer
在這裏你可以選擇你的點擊之間的間隔最大,並通過自己的處理計數(非常簡單)。
相關的代碼:
boolean isAlreadyOneClick;
@Override
public void mouseClicked(MouseEvent mouseEvent) {
if (isAlreadyOneClick) {
System.out.println("double click");
isAlreadyOneClick = false;
} else {
isAlreadyOneClick = true;
Timer t = new Timer("doubleclickTimer", false);
t.schedule(new TimerTask() {
@Override
public void run() {
isAlreadyOneClick = false;
}
}, 500);
}
}
與Win XP操作系統和完善的測試。
智能使用「定時器」來取消標記,比兩個時刻之間的比較更爲複雜,但更易於使用。我看到的缺點是:在哪裏存儲'isAlreadyOneClick'?似乎在解決彼此時帶來問題。如果(讓我們想象)點擊很快完成,這個解決方案的行爲也會有「漏洞」:每次'Timer'都會重置標誌,並且只有在這個時候,纔會有真正的雙擊處理。另外,我認爲這種方法不是真正的GC和資源友好。 – Benj 2015-06-05 13:00:24
你好Benj 我無法理解垃圾收集器和國旗之間的關係。你認爲進行的方式會打破某些東西嗎? 請問,你能否進一步確定你的例子及其後果? 對不起,我沒有看到你試圖展示。 – davidxxx 2015-06-06 18:33:06
我看到兩件事:1 /只是每當「else」部分都會碰到時,就會創建一個新的Timer對象。我會將此計時器作爲對象的字段移動,以允許從其他位置進行管理,例如右鍵單擊或稍微進行管理。 2 /這些計時器將每500毫秒雙擊不放,然後如果您必須雙擊兩次,最後纔有可能不按預期工作。 – Benj 2015-06-08 11:37:35
- 1. 雙擊鍵盤綁定Java
- 2. 雙擊java
- 3. 確定雙擊上的形象圖
- 4. Stylecop - 確定雙擊或浮動
- 5. Java:忽略單擊雙擊?
- 6. 雙擊檢查Java
- 7. 如何確定在XCeed Datagrid中哪個列被雙擊?
- 8. 確定在Java中
- 9. 在cocos2d中雙擊
- 10. 雙擊printf java幫助
- 11. 無法雙擊Selenium Java
- 12. 確定TDBGrid的標題中是否出現雙擊
- 13. java swing:單擊事件雙擊工作
- 14. 雙擊在linux
- 15. 雙擊在Mac
- 16. 在Java中確定'類型'
- 17. 雙擊/雙擊Angular2&ionic
- 18. 在jQuery中綁定事件(雙擊事件點擊...)
- 19. 雙[] - >雙擊[,]
- 20. 在ngTable中捕獲雙擊
- 21. 在Android中雙擊事件
- 22. 在Android中雙擊事件
- 23. 雙擊在Android中刷卡?
- 24. 在webview中雙擊鏈接
- 25. 在pycharm中雙擊打印
- 26. 在UIWebView中檢測雙擊
- 27. 在ASP.NET中雙擊顯示
- 28. 如何在QTableWidget(Qt)上正確點擊和雙擊?
- 29. Imageview單擊和雙擊在android中?
- 30. 雙擊自定義時間
您可能還想檢查'event.getButton()== MouseEvent.BUTTON1',以便只用鼠標左鍵來計算雙擊。 – 2017-07-19 18:00:27