IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[JTable] Détection de simple clic et de double clic


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 58
    Points
    58
    Par défaut [JTable] Détection de simple clic et de double clic
    Bonjour à tous,

    Je veux afficher deux fenêtres différentes en fonction que l'utilisateur a cliqué un simple ou un double clic sur le bouton gauche de la souris. Je détecte les clics sur des cases d'un JTable.
    J'ai un problème pour détecter le double clic seul. C'est-à-dire que lorsque je test avec la méthode mouseClicked pour détecter les clics, si l'utilisateur fait un simple clic alors la fenêtre 1 s'affiche. Sinon, si c'est un double clic alors la fenêtre 1 s'affiche (pas normal) et la fenêtre 2 que très rarement lorsque la cellule est déjà sélectionnée. Normalement ça devrait m'afficher que la fenêtre 2.
    Je ne sais pas comment faire pour corriger ce problème alors je vous demandes de l'aide. Je ne m'y prends peut-être pas comme il faut.

    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    table.addMouseListener(new MouseListener(){
    	public void mouseClicked(MouseEvent me){
    		if (me.getButton() == MouseEvent.BUTTON1){
                            // Simple clic
    			if (me.getClickCount() == 1){
    				createWindow1();
    			}
     
                            // Double clic
    			if (me.getClickCount() == 2){
    				createWindow2();
    			}
    		}
    	}
     
    	public void mouseEntered(MouseEvent me){}
    	public void mouseExited(MouseEvent me){}
    	public void mousePressed(MouseEvent me){}
    	public void mouseReleased(MouseEvent me){}
    });
    Merci de vos réponses

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 58
    Points
    58
    Par défaut
    Personne aurait une idée pour résoudre mon problème.

    Merci d'avance

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 65
    Points : 67
    Points
    67
    Par défaut Peut-être ...
    Salut,

    quand je regarde ton code je me dis que lorsque l'utilisateur fait un double clic la méthode mouseClicked est appelé et passes dans ton 1er if, puis elle est rappelée et passe dans ton 2nd.
    J'ai peut-être faux mais tente de changer l'ordre des if, ou de voir ce que ça donne en debug.

    Du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (mouse.getClickCount() == 2) {            
       // ouverture 2nde fenêtre
    }
    else {
       // ouverture 1ère fenêtre
    }

  4. #4
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Il faut probablement gérer l'espace de temps entre les 2 clicks comme le fait Windows....
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 58
    Points
    58
    Par défaut
    Tout d'abord merci de vos réponses.

    J'ai testé ce que tu m'as dit javaDev et ça ne marche pas.
    Mais je me suis aperçu que lorsque la case est déjà sélectionné, si je clique deux fois très rapidement cela marche. Donc comme tu as dit SheikYerbouti il faut sûrement gérer l'espace de temps entre deux clics.

    Je vais regarder ça et je vous mets au courant.

    Si quelqu'un d'autre à une idée je suis preneur.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Points : 62
    Points
    62
    Par défaut
    Y'a beaucoup plus simple, tu met ceci dans ton mouseclicked :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (me.getClickCount() == 2){
    createWindow2();}
    et simplement ça dans le mousepressed :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Object o=new Object();
    try
    {synchronized(o) { o.wait(100); }}
    catch(InterruptedException ex) { }
    if (me.getClickCount() != 2)
    createWindow1();

    Par contre, il est vrai que les clics du mouseclicked doivent être très rapide... sinon, le getClickCount() se réinistialise à 1..(moins d'une seconde il me semble)



    Dis moi si ça marche

  7. #7
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Mais, le mousepressed ne va t-il pas se déclencher dans tous les cas ?
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 170
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par SheikYerbouti
    Mais, le mousepressed ne va t-il pas se déclencher dans tous les cas ?
    sisi j'avais pas vu je viens d'édité mon post reregarde désolé

Discussions similaires

  1. [Débutant] Empécher clic droit et double clic gauche sur un controle
    Par ekydeta dans le forum VB.NET
    Réponses: 13
    Dernier message: 07/05/2014, 14h49
  2. Simuler un double-clic ou un F2 sur une JTable
    Par JamesP dans le forum Composants
    Réponses: 2
    Dernier message: 16/05/2007, 10h38
  3. Réponses: 3
    Dernier message: 25/08/2006, 14h01
  4. écoute de touches, de double clics sur un JTable
    Par Nicool dans le forum Composants
    Réponses: 7
    Dernier message: 06/06/2006, 12h52
  5. [JTable] gérer le double clic
    Par niko8181 dans le forum Composants
    Réponses: 4
    Dernier message: 02/06/2005, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo