Je veux savoir comment nous pouvons effectuer une action lorsque la souris est double-cliquée dans un composant.double clic d'identification en Java
Répondre
public void mouseClicked(MouseEvent event)
{
if (event.getClickCount() == 2) {
System.out.println("double clicked");
}
}
En supposant que vous voulez dire Swing, attribuez un MouseListener à votre composant:
addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e){
if(e.getClickCount()==2){
// your code here
}
}
});
Référence:
- Java Tutoriel: How to write a Mouse Listener
Le e.getClickCount()==2
n'est pas suffisant si vous voulez permettre à vos utilisateurs de faire plusieurs double-clics dans un court délai. Vous êtes limité par la configuration du bureau. Vous pouvez l'obtenir en regardant le résultat de Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval");
Une bonne façon de contourner le problème est de ne pas utiliser le chèque getClickCount()
mais d'utiliser un Timer
où vous pouvez choisir l'intervalle maximum entre vos clics et gérer soi-même la compte (très simple).
Le code associé:
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);
}
}
Testé avec Win XP OS et parfait.
Utilisation intelligente d'un 'Timer' pour désactiver un drapeau, plus complexe qu'une comparaison entre deux instants mais plus facile à utiliser. L'inconvénient que je vois est: où stocker le 'isAlreadyOneClick'? Semble apporter des problèmes tout en se résolvant les uns les autres. Cette solution aura également des "trous" dans son comportement si (imaginons) les clics se font très rapidement: à chaque fois que le "Timer" remettra à zéro le drapeau et seulement à ce moment, il y aura un double clic géré. Aussi, je pense que cette méthode n'est pas vraiment compatible GC et ressources. – Benj
Bonjour Benj Je n'arrive pas à comprendre la relation entre le Garbage Collector et le drapeau. Pensez-vous que la façon de procéder peut casser quelque chose? Pourriez-vous préciser votre exemple et ses conséquences? Désolé, je ne vois pas ce que vous essayez de montrer. – davidxxx
Il y a deux choses que je vois: 1/C'est juste que chaque fois que la partie "else" sera exécutée, un nouvel objet 'Timer' sera créé. Je voudrais déplacer cette minuterie comme un champ de l'objet pour permettre de le gérer à partir d'autres endroits tels que le clic droit ou un peu. 2/Ces minuteries ne flambent pas votre double clic toutes les 500ms, alors si vous double cliquez deux fois, il y a des chances que la dernière ne fonctionne pas comme prévu. – Benj
- 1. Java: ignorer un simple clic sur un double clic?
- 2. WPF ListView double clic
- 3. Youtube vidéo double clic
- 4. Double-clic sur l'événement
- 5. WPF: Bouton simple clic + double clic problème
- 6. Check double en Java
- 7. Strange Flex double clic comportement
- 8. Double clic dans Cocoa OSX
- 9. Arrêter le double clic après un seul clic
- 10. JSF Double-clic effectuer une action
- 11. Activer un lien sur double clic uniquement
- 12. comment obtenir le double-clic dans WPF
- 13. jQuery Saisie semi-automatique - Afficher la liste en double-clic
- 14. Struts2 Plugin jQuery: lien de déclenchement en double-clic
- 15. Boîte à outils ASP.NET Problème de double clic en accordéon
- 16. jQuery animation: Ignorer un double clic
- 17. JavaScript supprime le double clic de sélection
- 18. Double clic sur la souris avec pyHook
- 19. Java: conversion d'un double en chaîne
- 20. supprimer le code en double dans java
- 21. Convertir une chaîne en double - Java
- 22. Chaîne remplacer en Java ME double espace
- 23. Comment lire un double en Java?
- 24. Exécution d'un pot sur Vista avec un double-clic
- 25. Java table double entrée
- 26. Java: double vs float
- 27. Java double comparaison epsilon
- 28. Java Panel Double Buffering
- 29. java double [] [] - afficher comme image
- 30. jquery preventDefault l'ancre liée si un double-clic
Vous devrez probablement vérifier 'event.getButton() == MouseEvent.BUTTON1' pour ne compter que les doubles-clics avec le bouton gauche de la souris. –