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

Interfaces Graphiques en Java Discussion :

[DEBUTANT] Comment supprimer un ecouteur dynamiquement?


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de kayzra
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut [DEBUTANT] Comment supprimer un ecouteur dynamiquement?
    Je souhaiterai savoir comment il serait possible d'empecher un ecouteur (mouseListener) de fonctionner apres qu'il est ete utilise une fois.

    Voici un des ecouteurs de mouseClicked sur un de mes boutons que je souhaiterai desactiver aprés 1 clic :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            ...
            jButton4.setForeground(new java.awt.Color(236, 233, 216));
            jButton4.setText(bundle.getString("grille.jButton4.text")); 
            jButton4.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent evt) {
                    grille.this.mouseClicked(evt);
                }
            });
            jPanel1.add(jButton4);
            ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void mouseClicked(java.awt.event.MouseEvent evt) {                              
            JButton source = (JButton) evt.getSource();
            source.setBackground(Color.blue);
            source.setForeground(Color.blue);
            ...
            }
    Je precise que je dispose de 100 boutons gerés par la methode getSource().
    J'ai essayé la methode setEnabled(false) mais elle ne permet pas de desactiver l'ecouteur.
    Merci d'avance pour votre aide

    De plus j'ai remarqué que parfois sur mes application utilisant des JButtons il est necessaire de clicker a plusieur reprise pour que l'action soit pris en compte! Est-ce que c'est normale ? Quelqu'un pourrait il me dire d'où vient se probleme?

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    bah tu as la méthode removeActionListener, mais comme tu utilises une classe anonyme c'est foutu....

  3. #3
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Sinon, pour transférer comme tu le fais un évènement, il faut utiliser un dispatch() et pas simplement le transférer comme tu fais...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    1. tu gardes une reference vers ton listener et tu fais un remove*Listener
    2. tu utilises get*Listener et tu les retires tous
    3. tu utilises un champ boolean (attribut de ton listener) pour n'executer le code qu'une seule fois
    4. tu retire le listener lors de l'execution de celui-ci (et c'est bien ce que tu veux, non ?) (this faisant reference a ton listener, et ton boutton etant la source de ton event...)


    Edit : Et par convention, les noms de classes commencent par une majuscule.

  5. #5
    Membre confirmé Avatar de kayzra
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    Merci pour vos reponses.
    N'ayant pas trop d'experience j'ai un peu de mal a comprendre vos explications

    Au sujet de la méthode dispatch() comment l'applique t on dans la pratique?.
    j'ai regardé la doc mais ça reste floue pour moi

    Pour solutionner mon probleme je pense utiliser une ArrayList dans laquelle j'introduirai apres chaque clic la source(JButton) et jutiliserai un if afin de zapper l'ecouteur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(maListe.contains(source)==true) break;//si true ne pas appliquer les méthodes
    ce qui ressemble un peu a ce que TabrisLeFol me propose (a mon niveau : c'est à dire pas terrible!!!)

    kayzra a dit:
    De plus j'ai remarqué que parfois sur mes application utilisant des JButtons il est necessaire de clicker a plusieur reprise pour que l'action soit pris en compte! Est-ce que c'est normale ? Quelqu'un pourrait il me dire d'où vient se probleme?
    Quelqu'un aurrait il une explication?

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Par défaut
    Quelqu'un aurrait il une explication?
    Utilise un ActionListener plutôt qu'un MouseListener/MouseAdapter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 25/03/2013, 11h06
  2. [VB6]comment supprimer dynamiquement un controle dynamique?
    Par totor le troll dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 06/07/2011, 21h10
  3. comment supprimer une lettre en debut du liste de mot?
    Par doogybreton dans le forum Excel
    Réponses: 2
    Dernier message: 10/12/2007, 00h37
  4. Réponses: 2
    Dernier message: 16/06/2006, 22h07
  5. comment creer un alias dynamique avec BDE et ODBC
    Par david33 dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/07/2002, 11h50

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