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 :

lancer l'action d'un JButton depuis le code.


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut lancer l'action d'un JButton depuis le code.
    Bonjour!
    je me pose une question.. Est-il possible de lancer l'action d'un JButton depuis le code... Je m'explique: J'ai un JButton avec un listener dessus et j'aimerais pouvoir faire qq chose du genre: monJbutton.doAction()...
    J'ai bien trouvé un "doClick()" mais ça ne passe pas dans le listener ça fait juste un effer visuel de click sur le bouton... même avec un invokeLater ça ne marche pas...
    Une idée? Merci :-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     SwingUtilities.invokeLater(new Runnable() {
     
                                    public void run() {
                                        but.doClick();
                                    }
                                });

  2. #2
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Toi tu es de ces personnes qui mettent un MouseListener sur le JButton au lieu d'utiliser ActionListener ou une javax.swing.Action ?

  3. #3
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    je suis d'accord avec natha il est 100 fois plus simple de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    monnJButton.addActionListener(){
    public void actionPerformed(ActionEvent e) {
        //Et la tu lance ta méthode ou ta classe
    }
    }
    comme ca un clic sur le bouton entraine l'action souhaitée...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut
    Ah voilà!! Non le truc c'est qu'on est plusieurs sur un projet et effectivement quelqu'un a mis un mouselistener sur le JButton... ça doit être ça alors ^^ merci!

    Edit: Euhm non en fait il y a une raison pourquoi ce n'est pas un actionListener... Il faut pouvoir faire la différence entre un clic droit et un clic gauche sur le bouton. Et il me semble qu'avec un actionListener on arrive pas à distinguer les 2 clic

  5. #5
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    alors dans ce cas tu fais comme ca :

    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
    MouseListener listenMouse = new MouseAdapter() {
     
                        public void mouseClicked(MouseEvent e) {
                                if (e.getButton()== MouseEvent.BUTTON3){                            
                                    //traitement si clic droit
                                }
                                if((e.getButton() == MouseEvent.BUTTON1)&&(e.getClickCount()==2)) {
                                    //traitement si double clic gauche (ca peut toujours te servir)
                                }
                                if(e.getButton() == MouseEvent.BUTTON1){
                                    //traitement si clic droit
                                }
                            }
                        }
                    };
    puis tu ajoute le mouseListener que tu viens de créer a ton JButton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myJButton.addMouseListener(listenMouse);

  6. #6
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Citation Envoyé par beny1700 Voir le message
    Edit: Euhm non en fait il y a une raison pourquoi ce n'est pas un actionListener... Il faut pouvoir faire la différence entre un clic droit et un clic gauche sur le bouton. Et il me semble qu'avec un actionListener on arrive pas à distinguer les 2 clic
    ActionListener pour le clic gauche (c'est portable au moins contrairement au MouseListener), et MouseListener pour le clic droit.

    Par rapport à la solution de nayah je ne suis pas d'accord non plus, il ne faut pas tester les boutons mais utiliser isPopupTrigger pour tester le "clic droit". Pensez à la portabilité et à nos amis utilisateurs de mac qui ont une souris à 1 bouton par exemple.

  7. #7
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    Citation Envoyé par natha Voir le message
    ActionListener pour le clic gauche (c'est portable au moins contrairement au MouseListener), et MouseListener pour le clic droit.

    Par rapport à la solution de nayah je ne suis pas d'accord non plus, il ne faut pas tester les boutons mais utiliser isPopupTrigger pour tester le "clic droit". Pensez à la portabilité et à nos amis utilisateurs de mac qui ont une souris à 1 bouton par exemple.
    Je n'y avais pas pensé... mea culpa... (preuve que je manque encore d'experience)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Par défaut
    OK, bon j'ai implémenté mon code différemment et ça fonctionne, mais ça me fait un peu de redondance... Mais votre solution ne répond pas à mon problème puisque ce serait un MouseListener... Le doClick() ne lancerait pas l'action non?

  9. #9
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    beny natha t'a donné toutes les réponses il te suffit d'accrocher 2 listener a ton JButton... un action qui gerera naturellement le clic gauche et un mouse listener qui va gérer le clic droit.

  10. #10
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 52
    Par défaut
    Une solution pour ton problème est l'utilisation de frameworks de test.
    Il permettent de simuler les actions d'un utilisateur (ex: clics, remplissage de champs)
    J'en ai expérimenté un durant un stage appelé FEST qui était tout a fait adapté.

    Si ça t'intéresse
    http://fest.easytesting.org/wiki/pmwiki.php

Discussions similaires

  1. Lancer l'action double click depuis une fonction
    Par madevilts dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 03/04/2008, 17h10
  2. Réponses: 4
    Dernier message: 21/11/2007, 18h21
  3. Lancer une action depuis une autre action
    Par anaon dans le forum Struts 1
    Réponses: 6
    Dernier message: 04/08/2006, 19h38
  4. Lancer une action JS depuis un bouton de formulaire
    Par davinout dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2006, 08h50
  5. Réponses: 5
    Dernier message: 15/07/2004, 23h28

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