Ich möchte wissen, wie können wir Aktion durchführen, wenn die Maus doppelt in einer Komponente angeklickt wird.Identifizierung Doppelklick in Java
Antwort
public void mouseClicked(MouseEvent event)
{
if (event.getClickCount() == 2) {
System.out.println("double clicked");
}
}
Angenommen, Sie in Swing bedeuten, ein Mouselistener zu Ihrer Komponente zuweisen:
addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
if(e.getClickCount()==2){
// your code here
}
}
});
Referenz:
- Java Tutorial: How to write a Mouse Listener
Die e.getClickCount()==2
reicht nicht aus, wenn Sie Ihren Benutzern erlauben möchten, mit einer kurzen Verzögerung mehrere Doppelklicks auszuführen. Sie sind durch die Desktop-Konfiguration beschränkt. Sie können es, indem Sie das Ergebnis Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval");
Ein guter Weg, um das Problem zu umgehen, nicht die getClickCount()
Prüfung verwenden, sondern ein Timer
zu verwenden, wo Sie das Intervall max zwischen Klicks können wählen, und dass man sich zu handhaben dem zählen (sehr einfach).
Der Code zugeordnet:
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);
}
}
Getestet mit Win XP OS und perfekt.
Intelligente Verwendung eines "Timers" zum Deaktivieren einer Flagge, komplexer als ein Vergleich zwischen zwei Zeitpunkten, aber einfacher zu verwenden. Der Nachteil, den ich sehe, ist: Wo kann ich 'isAlreadyOneClick' lagern? Scheint Probleme beim Lösen von einander zu verursachen. Diese Lösung wird auch „Löcher“ in seinem Verhalten, wenn (sie sich vor) die Klicks sind sehr schnell erledigt: jedes Mal, wenn der 'Timer' wird das Flag zurückgesetzt und nur zu diesem Zeitpunkt, wird es ein wahrer Doppelklick behandelt werden. Außerdem denke ich, dass diese Methode nicht wirklich GC- und Ressourcenfreundlich ist. – Benj
Hallo Benj ich es nicht schaffen, die Beziehung zwischen der Garbage Collector und die Flagge zu verstehen. Denkst du, dass der Weg, um fortzufahren, etwas brechen kann? Könnten Sie bitte Ihr Beispiel und seine Konsequenzen präzisieren? Tut mir leid, ich sehe nicht, was Sie zu zeigen versuchen. – davidxxx
Es gibt zwei Dinge, die ich zu sehen: 1/Es ist nur, dass jedes Mal, wenn der „else“ Teil des Weges laufen wird, ein neues 'Timer' Objekt erstellt wird. Ich würde diesen Timer als ein Feld des Objekts verschieben, um es von anderen Orten wie Rechtsklick oder etwas zu verwalten. 2/Bei diesen Timern wird der Doppelklick jeweils 500 ms entfernt. Wenn Sie zweimal doppelklicken müssen, besteht die Möglichkeit, dass der letzte nicht wie erwartet funktioniert. – Benj
- 1. Java-Anwendungen ausführen Durch Doppelklick
- 2. Doppelklick vs java -jar MyJar.jar
- 3. Identifizierung und ein vordefiniertes Muster in einem String (Java) Entfernen
- 4. Identifizierung einer Karte in groovy
- 5. Identifizierung Punkte in einer Kurve
- 6. AmStockChart Panel Titel Identifizierung
- 7. Identifizierung der Schrägstrich
- 8. Doppelklick in Python Selen
- 9. Unterscheiden zwischen einem Klick und Doppelklick in Java
- 10. Doppelklick Hervorhebung
- 11. Python - sys.argv und Flagge Identifizierung
- 12. Identifizierung einzigartige Elemente in Teillisten und Änderung
- 13. Identifizierung hashtable als benutzerdefinierten Typ in OCaml
- 14. PageFactory zur Identifizierung der Tabellenzeilen
- 15. Identifizierung Schlüssel für neue Hierarchien
- 16. Eindeutige Identifizierung eines bestimmten Computer
- 17. wie Doppelklick in Android implementieren
- 18. Catch-Doppelklick in Cocoa OSX
- 19. Cleaner Einzelklick + Doppelklick in Silverlight?
- 20. NSImageView Doppelklick-Aktion
- 21. DataGridView Element Doppelklick
- 22. jQuery ConnectedSortable Doppelklick
- 23. Tinymce aktivieren auf Doppelklick
- 24. FabricJS Doppelklick auf Objekte
- 25. ASP.Net Doppelklick-Problem
- 26. Erweiterung nach Doppelklick deaktivieren
- 27. Highcharts - Doppelklick Ereignis
- 28. jQuery-Animation: Doppelklick ignorieren
- 29. Strange Flex Doppelklick-Verhalten
- 30. Doppelklick/tap Mapzoom (Android)
Sie wollen wahrscheinlich 'event.getButton() == MouseEvent.BUTTON1' als auch überprüfen, nur Doppelklicks mit der linken Maustaste zählen. –