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

avec Java Discussion :

Problème de Checkbox Listener


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 35
    Points : 33
    Points
    33
    Par défaut Problème de Checkbox Listener
    Bonjour Developpers

    je travail dans un projet et j'utilise Swing pour ce faire et comme je suis débutant je galère avec une exception
    en fait j'ai plusieurs checkbox a gérer et qui sont en mode non editable au début ( 23 :s ) et j'ai un bouton de modification
    j'aimerai creer un listener sur le bouton de modification une fois appuyer on active les checkbox en question

    j'ai creer ce listener que j'ai ajouté au bouton et au checkbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	class EnblListener implements ActionListener{
    	      public void actionPerformed(ActionEvent e) {
     
    	                (( JCheckBox) e.getSource()).setEnabled(true);
    	      }
    	   }
    mais ça fait lever cette exception


    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JButton cannot be cast to javax.swing.JCheckBox
    	at Vue.Validation$EnblListener.actionPerformed(Validation.java:558)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    	at java.awt.Component.processMouseEvent(Component.java:6375)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    	at java.awt.Component.processEvent(Component.java:6140)
    	at java.awt.Container.processEvent(Container.java:2083)
    	at java.awt.Component.dispatchEventImpl(Component.java:4737)
    	at java.awt.Container.dispatchEventImpl(Container.java:2141)
    	at java.awt.Component.dispatchEvent(Component.java:4565)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
    	at java.awt.Container.dispatchEventImpl(Container.java:2127)
    	at java.awt.Window.dispatchEventImpl(Window.java:2482)
    	at java.awt.Component.dispatchEvent(Component.java:4565)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:684)
    	at java.awt.EventQueue.access$000(EventQueue.java:85)
    	at java.awt.EventQueue$1.run(EventQueue.java:643)
    	at java.awt.EventQueue$1.run(EventQueue.java:641)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    	at java.awt.EventQueue$2.run(EventQueue.java:657)
    	at java.awt.EventQueue$2.run(EventQueue.java:655)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:654)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    C'est la JCheckBox qu'il faut utiliser par e.getSource()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	class EnblListener implements ActionListener{
    	      public void actionPerformed(ActionEvent e) {
     
    	                maCheckBox.setEnabled(true);
    	      }
    	   }
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 35
    Points : 33
    Points
    33
    Par défaut
    J'ai 23 chekbox je voulais evité 23 lignes de code mais s'il n'y a pas d'autres moyen je les mettrai comme ça merci

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 162
    Points
    162
    Par défaut
    Citation Envoyé par o-sys Voir le message
    J'ai 23 chekbox je voulais evité 23 lignes de code mais s'il n'y a pas d'autres moyen je les mettrai comme ça merci
    Mets tes check box dans une liste...

  5. #5
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Mets tes check box dans une liste...
    ça lui ferait écrire plus de code :
    - instancier la liste
    - entrer chaque JCheckBox dans cette liste
    - parcourir la liste pour désactiver les JCheckBox.

    En fait cette liste existe déjà. C'est la liste des composants qui se trouvent sur le JFrame ou le JPanel.
    Donc on peut "parcourir" tous les composants et décider de les désactiver si on est sur un JCheckBox.

    Une solution à "je voulais evité 23 lignes de code ..." est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            Container c = getContentPane();
            for (Component component : c.getComponents()) {
                if (component instanceof javax.swing.JCheckBox) {
                    ((javax.swing.JCheckBox)component).setEnabled(false);
                }
            }
    de surcroît, il peut ajouter /supprimer des JCheckBox sans modifier ce code
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    C'est une erreur de cast que tu as.
    Comme tu ajoutes ce Listener au bouton également, tu ne peux pas caster e.getSource en Checkbox puisque c'est un bouton.
    Avant de caster vérifie le type de component que e.getSource() renvoie à l'aide instanceof.

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

Discussions similaires

  1. [FLASH 8] Problème avec les listener
    Par aldo-tlse dans le forum Flash
    Réponses: 11
    Dernier message: 01/02/2007, 16h04
  2. [xsl] Probléme De checkbox
    Par dimkha dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 27/01/2006, 12h09
  3. Problème de connexion/listener
    Par jokos2000 dans le forum Oracle
    Réponses: 48
    Dernier message: 08/09/2005, 18h03
  4. Problème sur CHECKBOX
    Par dede92 dans le forum Windows
    Réponses: 6
    Dernier message: 22/02/2005, 10h48
  5. [JList] problème avec 2 listeners
    Par papy_tergnier dans le forum Composants
    Réponses: 2
    Dernier message: 21/06/2004, 10h05

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