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 :

Erreur ClassCastException pour Combobox


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut Erreur ClassCastException pour Combobox
    Coucou c'est remoi

    Bon voila je vous explique, j'ai une combobox contenant des entreprises et je voudrai que lorsque je clique sur une entreprise il s'affiche les nbre de Km associés dans un textfield.

    Je fais cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    {	public void itemStateChanged(java.awt.event.ItemEvent e) 
    {
    if (ComboBoxEntreprise.getSelectedIndex() != 0)
    TextFieldkm.setText(((Entreprise)ComboBoxEntreprise.getSelectedItem()).getnbreKm());
     
    else if(e.getItem() == "Nouvelle Entreprise...")
    {	
    fenAjoutEntrep.getDialogAjoutEntrep().setModal(true);
    fenAjoutEntrep.getDialogAjoutEntrep().setVisible(true);
    }...
    Mais ensuite dans le programme lorsque je clique sur "Nouvelle Entreprise..." la boite de dialogue ne s'affiche plus et je récupére une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String
    	at InterfaceVisuel3$6.itemStateChanged(InterfaceVisuel3.java:1024)
    	at javax.swing.JComboBox.fireItemStateChanged(Unknown Source)

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    Je ne comprend pas car dans cette mm classe j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Personne ptmp	= new Personne (
    (Entreprise)ComboBoxEntreprise.getSelectedItem()...
    Qui est du mm style et là ça marche

    Quelqu'un aurait une idée?

    Merci d'avance

  3. #3
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    lu,

    ComboBoxEntreprise.getSelectedItem() te renvoie un Objet. dans ton cas, il renvoie un String puisque ton JComboBox utiliseun modèle par défaut...

    d'ailleurs la méthode getSelectedItem se base sur le modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        public Object getSelectedItem() {
            return dataModel.getSelectedItem();
        }
    donc, soit dans itemStateChanged, tu t'attends à avoir une chaîne de caractère comme élément sélectionné, soit tu crée ton propre modèle à partir de ComboBoxModel qui lui renverras une entité de type Personne lors de l'appel à getSelectedItem...

    J'espère t'avoir un peu aidé.
    auteur de Awl (http://awl-wizard.sourceforge.net), librairie de développement d'assistant en Java.
    auteur de Blackdog (http://www.blackdog-project.org), lecteur/gestionnaire audio en Java.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Ta méthode getnbreKm() renvoie un int ?
    setText ne veut qu'une String.
    Tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String.valueOf(blabla.getnbreKm())
    dans ton setText().
    Sinon pour l'égalité de chaines de caractères je te conseille fortement de ne pas utiliser == réservé aux types primitifs mais de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maChaine.equals(autreChaine);

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    Tout d'abord pour votre aide, je vais essayer tout de suite

    en fait pour getNbreKm() je renvoi bien un string et pas un int

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    En fait l'erreur et exactement sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextFieldkm.setText(((Entreprise)ComboBoxEntreprise.getSelectedItem()).getnbreKm());

  7. #7
    Invité
    Invité(e)
    Par défaut
    Ok au temps pour moi.
    Mais bon pour le equals c'est quand même mieux de l'utiliser...
    Je crois qu'il s'agit d'une différence genre égalité physique et égalité logique quand tu utilises l'un ou l'autre

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    Peut être faut-il que je ne mette pas dans mon itemlistener :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (ComboBoxEntreprise.getSelectedIndex() != 0)
    TextFieldkm.setText(((Entreprise)ComboBoxEntreprise.getSelectedItem()).getnbreKm());
    J'ai essayé a d'autre endroit mais je ne voit pas

  9. #9
    Invité
    Invité(e)
    Par défaut
    Ta chaine "Nouvelle Entreprise..." est-elle bien le premier élément de ta liste ?
    Car si elle ne l'est pas , avec ton test (qu'il faut laisser car apparemment tes éléments sont de type Entreprise sauf "Nouvelle Entreprise") tu rentres dans le premier cas en le sélectionnant.
    Peut-être qu'en faisant le test si l'item sélectionné est une Entreprise á la place de l'indice ca enlèverait l'erreur

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    Effectivement j'ai bien des item du type entreprise mais avant, dans la combobox j'ai 2 éléments ( " " et "Nouvelle Entreprise..." ) que je crée moi même , pour mieux comprendre voila comment je rajoute mes éléments dans la cbbox:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	public static void MAJList()
    {
    	ComboBoxEntreprise.removeAllItems();
    	ComboBoxEntreprise.addItem("");
    	ComboBoxEntreprise.addItem("Nouvelle Entreprise...");
     
    	for (int i3 =0; i3 < Donnees.entrepriseslistes.size(); i3++)
    				ComboBoxEntreprise.addItem(Donnees.entrepriseslistes.get(i3));
    }

  11. #11
    Invité
    Invité(e)
    Par défaut
    Donc l'indice de ta chaine "Nouvelle Entreprise..." est 1. Tu rentres donc dans la première catégorie. Si tu changes ton test en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (ComboBoxEntreprise.getSelectedIndex() > 1)
    Ca devrait marcher

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    Merci Geoges7, je t'aime , ça faisait 3 jours que j'était la dessus (bon je te rassure j'ai fais d'autre choses quand mm pendant ce temps en paralléle )et je comprenais pas l'erreur, il me semblait que c'était juste et je pensais bien que c'était juste une petite bétise.



  13. #13
    Invité
    Invité(e)
    Par défaut
    De rien
    Oublie pas

    EDIT : grillé...

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 20
    Points
    20
    Par défaut
    lol

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

Discussions similaires

  1. [MySQL] Erreur sql pour inserer des checkbox
    Par digger dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/11/2005, 11h06
  2. erreur code pour désactiver molette souris.
    Par rangernoir dans le forum Access
    Réponses: 2
    Dernier message: 27/09/2005, 10h14
  3. [Débutant(e)] Message d'erreur JDBC pour oracle
    Par krakatoe dans le forum JDBC
    Réponses: 1
    Dernier message: 14/09/2005, 16h44
  4. Erreur lancement pour DTS
    Par HULK dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 19/08/2005, 12h46
  5. [ODBC] erreur SQL pour les unions qui renvoient vide
    Par fabriceMerc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/11/2003, 11h06

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