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

AWT/Swing Java Discussion :

Impossibilité de vider une JComboBox ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Par défaut Impossibilité de vider une JComboBox ?
    Bonsoir, voici mon problème :
    Dans un cadre scolaire, je fais une petite appli simulant une gestion de comptes bancaire.

    Je sélectionne un client dans une liste, et ses comptes s'affichent (combobox aussi). Après avoir cliqué sur un compte, je veux retirer de l'argent (ce n'est juste qu'une soustraction sur le solde du compte). Tout cela marche, seulement si j'effectue un retrait. Au deuxième, ça plante.

    Code m'affichant les clients dans une première jComboBox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            jComboBox1.addItem("-------------- Client --------------");    
     
            while (i<banque.nombreClients) {
                jComboBox1.addItem(banque.lesClients.get(i).prenom + " " + banque.lesClients.get(i).nom);
                i++;
            }
    Code qui me permet de savoir quel client a été sélectionné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clientSelectObjet = banque.lesClients.get(jComboBox1.getSelectedIndex() - 1);
    Une fois un client choisi, une seconde combobox se remplit avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        public void remplirListeComptes(){
     
            jComboBox2.removeAllItems();
     
            jComboBox2.addItem("-------------- Compte --------------");
     
            int i=0;
     
            while (i<clientSelectObjet.nombreComptes){
                jComboBox2.addItem("Compte n°" + this.clientSelectObjet.lesComptes.get(i).numCompte + " (solde : " + clientSelectObjet.lesComptes.get(i).soldeCompte + ")");
                i++;
            }
        }
    Lorsque je clic sur un des comptes, le code qui me permet de récupérer le compte qui a été cliqué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void clicListeComptes() {
            if (jComboBox2.getSelectedItem() != "-------------- Compte --------------") {
     
                compteSelectObjet = clientSelectObjet.lesComptes.get(jComboBox2.getSelectedIndex()-1);
            }
     
        }
    Enfin, le code lorsque l'on clic sur Valider le retrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void faireRetrait() {
            float sommeRetiree = Float.parseFloat(jTextField2.getText());        
            compteSelectObjet.Retirer(sommeRetiree);       
            this.compteSelectObjet = null;       
        }
    Bref tout ceci marche. Le problème, c'est que si je veux refaire la même opération, je dois vider la combobox des Comptes à chaque appel de remplirListeComptes(), sinon ils vont tous venir se rajouter les uns à la des autres. J'ai essayé d'ajouter un jComboBox2.removeAllItems(); au début de la méthode remplirListeComptes(), mais ça me pond un bordel énorme. Ca marche au premier coup, et dès que je relance remplirListeComptes(), j'ai tout ça (je sais pas si c'est utile de le mettre):

    Exception occurred during event dispatching:
    java.lang.Error: java.lang.reflect.InvocationTargetException
    at org.jdesktop.application.ApplicationAction.actionFailed(ApplicationAction.java:859)
    at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:665)
    at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    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.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
    at java.awt.Component.processMouseEvent(Component.java:6263)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6028)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4630)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
    at java.awt.Dialog$1.run(Dialog.java:1046)
    at java.awt.Dialog$3.run(Dialog.java:1098)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Dialog.java:1096)
    at java.awt.Component.show(Component.java:1563)
    at java.awt.Component.setVisible(Component.java:1515)
    at java.awt.Window.setVisible(Window.java:842)
    at java.awt.Dialog.setVisible(Dialog.java:986)
    at org.jdesktop.application.SingleFrameApplication.show(SingleFrameApplication.java:296)
    at pti.PTIView.clicOperation(PTIView.java:235)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:662)
    at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    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.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
    at java.awt.Component.processMouseEvent(Component.java:6263)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6028)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4630)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4460)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:662)
    ... 66 more
    Caused by: java.lang.Error: java.lang.reflect.InvocationTargetException
    at org.jdesktop.application.ApplicationAction.actionFailed(ApplicationAction.java:859)
    at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:665)
    at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698)
    at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1240)
    at javax.swing.JComboBox.contentsChanged(JComboBox.java:1311)
    at javax.swing.JComboBox.intervalRemoved(JComboBox.java:1331)
    at javax.swing.AbstractListModel.fireIntervalRemoved(AbstractListModel.java:161)
    at javax.swing.DefaultComboBoxModel.removeAllElements(DefaultComboBoxModel.java:169)
    at javax.swing.JComboBox.removeAllItems(JComboBox.java:751)
    at pti.fenOperation.remplirListeComptes(fenOperation.java:439)
    at pti.fenOperation.validerOperation(fenOperation.java:399)
    ... 71 more
    Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:662)
    ... 80 more
    Caused by: java.lang.ArrayIndexOutOfBoundsException: -2
    at java.util.Vector.get(Vector.java:696)
    at pti.fenOperation.clicListeComptes(fenOperation.java:469)
    ... 85 more



    Merci d'avance !

  2. #2
    Membre éclairé Avatar de L4BiN
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2006
    Messages : 432
    Par défaut
    A la fin de la liste des exception tu as un java.lang.ArrayIndexOutOfBoundsException: -2

    qui vient de quelque part dans cette methode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void clicListeComptes() {
            if (jComboBox2.getSelectedItem() != "-------------- Compte --------------") {
     
                compteSelectObjet = clientSelectObjet.lesComptes.get(jComboBox2.getSelectedIndex()-1);
            }
     
        }
    verifie que ton jComboBox2 est bien construit.. parceque
    java.lang.ArrayIndexOutOfBoundsException: -2 pourrait signifier que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jComboBox2.getSelectedItem() = -1
    et que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    jComboBox2.getSelectedIndex()-1 = -2
    et donc que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    clientSelectObjet.lesComptes.get(-2);
    entraine une exception

Discussions similaires

  1. Vider une base
    Par arcane dans le forum Requêtes
    Réponses: 13
    Dernier message: 04/12/2012, 22h59
  2. [BD vierge] Vider une base de données
    Par Pedro dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/06/2004, 14h40
  3. comment vider une base de donnée
    Par caps_corp dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 21/04/2004, 16h54
  4. Couleur d'une JComboBox disabled
    Par ced dans le forum Composants
    Réponses: 6
    Dernier message: 06/01/2004, 15h33
  5. comment vider une chaine de caractère
    Par gaut dans le forum C
    Réponses: 13
    Dernier message: 12/09/2003, 11h30

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