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
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é :
clientSelectObjet = banque.lesClients.get(jComboBox1.getSelectedIndex() - 1);
Une fois un client choisi, une seconde combobox se remplit avec ce code :
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é :
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 :
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 !
Partager