identifizieren Sie einen Doppelklick auf java
Ich möchte wissen, wie können wir die Maßnahme durchführen, wenn die Maus doppelt angeklickt, in einer Komponente.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich möchte wissen, wie können wir die Maßnahme durchführen, wenn die Maus doppelt angeklickt, in einer Komponente.
Du musst angemeldet sein, um einen Kommentar abzugeben.
event.getButton() == MouseEvent.BUTTON1
als gut, nur zählen doppelt-klickt mit der linken Maus-Taste.SwingUtilities.isLeftMouseButton(event)
Vorausgesetzt, du meinst in Schwung, weisen Sie einen MouseListener zu Ihrem Bauteil:
Referenz:
Listener
Den
e.getClickCount()==2
ist nicht genug, wenn Sie wollen, um Ihren Benutzern ermöglichen, mehrere Doppel-Klicks in einem kurzen delay.Sie sind begrenzt von der desktop-Konfiguration.
Sie können es durch die Suche das Ergebnis
Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval");
Ein guter Weg, um zu umgehen, das problem ist nicht die
getClickCount()
überprüfen, sondern auch, um eineTimer
wo können Sie wählen, das Intervall max zwischen Ihre Klicks und zu handhaben, indem sich die Zählung (sehr einfach).Den code :
Getestet mit Win Xp OS und perfekt.
Timer
zu unset eine Flagge, die komplexer sind als ein Vergleich zwischen zwei Augenblicken aber einfacher zu bedienen. Der Nachteil den ich sehe, ist : wo speichern dieisAlreadyOneClick
? Scheint auch Probleme mit sich bringen, während die Lösung eines anderen. Diese Lösung wird auch "Löcher" in seinem Verhalten, wenn (angenommen) die Klicks sind sehr schnell gemacht : jedes mal, wenn dieTimer
wird dieses flag zurückgesetzt, und nur in dieser Zeit, wird es eine wahre Doppelklick behandelt. Außerdem denke ich, dass diese Methode nicht wirklich GC und Ressourcen freundlich.Timer
- Objekt erstellt werden. Ich würde bewegen Sie diesen timer als ein Feld des Objekts zu ermöglichen, die Verwaltung, die ihn von anderen Orten wie Rechtsklick oder etwas. 2/ Diese Timer werden unermüdlicher Ihre doppelklicken Sie jeweils 500ms, wenn dann müssen Sie doppelklicken klicken Sie zweimal, gibt es Chancen für die zuletzt nicht wie erwartet funktionieren.e.getClickCount() % 2 == 0
zu erkennen, mehrere Doppel-Klicks innerhalb"awt.multiClickInterval"
?Mein problem ist, dass ich haben, um zu reagieren, eine Möglichkeit, wenn der user einfache Klicks, eine andere, wenn Sie mehr als einmal klicken (meine Swing-VM scheint in der Lage zu zählen bis zu vier Klicks, wenn ich auf mehrere Male). Bei mir lief das Beispiel oben, es schien zu zählen, ein dreifach-Klick, als ein einziges. So, hier ist mein schreiben. Im Grunde habe ich nur eine geplante Aufgabe, die wartet, bis sich der Staub löscht und dann überprüft die Anzahl der Klicks registriert. Die 400 ms warten scheint zu funktionieren am besten für mich.