- 核心結論
- Java 無專門的「雙擊監聽器」,需使用
MouseListener 的 mouseClicked(MouseEvent e) 方法,判斷 e.getClickCount() == 2。
實現方式對比
| 方式 | 代碼片段 | 優點 | 缺點 |
| 匿名內部類 | comp.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) { /* 雙擊邏輯 */ }
}
});
| 就地定義,封裝性好 | 大量使用產生許多 class 文件 |
| 具體類實現 | class MyListener extends MouseAdapter { ... }
comp.addMouseListener(new MyListener());
| 可復用、易測試、單例模式 | 需額外文件/類定義 |
為何推薦匿名類?
- 邏輯局部化,閱讀代碼時上下文連貫。
- 自動捕獲外部 final/效果性 final 變量,無需額外構造函數傳參。
- 現代 IDE 支持折疊、重構,維護成本低。
參考資源
Java 雙擊監聽器詳細講解
總結
雙擊檢測本質是點擊計數判斷,匿名內部類與具體類各有優勢,按項目規範與復用需求選擇即可。