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 :

java.lang.String cannot be cast to Item


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Points : 178
    Points
    178
    Par défaut java.lang.String cannot be cast to Item
    Bonjour à tous , j'ai un souci que ne comprends pas.

    J'ai une JComboBox qui contient 7 éléments.
    J'aimerais la balayer pour récupérer les éléments:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for(int t=0;t<adressePanel.perCatCombo.getItemCount();t++){
     
     
              int k  = ((Item)adressePanel.perCatCombo.getSelectedItem()).getId();
     
     
           }
    Mais j'ai une exception générée alors que ailleurs dans le programme cela fonctionne:
    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
    39
    40
     
    package com.vv.tribune;
     
    public class Item  
    {  
          private int id;  
          private String description;
          private String value;
     
          public Item(int id, String description)  
          {  
              this.id = id;  
              this.description = description;
              this.value = "";
          }  
     
          public void setValue(String val) {
              value = val;
          }
     
     
          public int getId()  
          {  
              return id;  
          }  
     
          public String getDescription()  
          {  
              return description;  
          }
     
          public String getValue()
          {
              return value;
          }
     
          public String toString()  
          {  
              return description;  
          }
    merci.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Points : 39
    Points
    39
    Par défaut
    Quel est le type de adressePanel ?

  3. #3
    Membre habitué
    Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Points : 178
    Points
    178
    Par défaut
    PersonTabAdressePanel

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    public class PersonTabAdressePanel extends javax.swing.JPanel{
     
     
       public PersonTabAdressePanel(PersonDialog parent) {
            mainDialog = parent;
     
            initComponents();
     
     
            /** Modifier and Supprimer button alowed only if Event not closed */
            if (ContextSingleton.getInstance().isEventClosed()) {
                perModifierButton.setVisible(false);
                perSupprimerButton.setVisible(false);
                passerButton.setVisible(false);
            }
            mainDialog.perNom.addKeyListener(new UpperCaseKeyAdapter());
            mainDialog.perPrenom.addKeyListener(new UpperCaseKeyAdapter());
     
            perAdresse1.addKeyListener(new UpperCaseKeyAdapter());
            perAdresse2.addKeyListener(new UpperCaseKeyAdapter());
     
            perCodePostal.addKeyListener(new NumericKeyAdapter());
            perTelPerso.addKeyListener(new TelephonKeyAdapter());
            perTelProf.addKeyListener(new TelephonKeyAdapter());
            perTelMobile.addKeyListener(new TelephonKeyAdapter());
            perTelFax.addKeyListener(new TelephonKeyAdapter());
            perFonction.addKeyListener(new UpperCaseKeyAdapter());
            perVille.addKeyListener(new UpperCaseKeyAdapter());
     
            //paysModel = new PaysComboModel();
            //perPaysCombo.setModel(paysModel);
            loadPaysCombo();
     
            setAllModifiableFields(false);
     
            perPaysCombo.setEditable(false);
            perCatCombo.setEditable(false);
            perSCatCombo.setEditable(false);
            perOrgCombo.setEditable(false);
     
            perVIP.setEnabled(false);
            perCadeau.setEnabled(false);
     
            setVisibleTitre(false);
     
            mainDialog.perTitre.addKeyListener(new UpperCaseKeyAdapter());
     
            mainDialog.maleRadioButton.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    setVisibleTitre(false);
                    setEnableTitre(false);
                }
            });
            mainDialog.femaleRadioButton.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    setVisibleTitre(false);
                    setEnableTitre(false);
                }
            });
            mainDialog.neutreRadioButton.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    setVisibleTitre(false);
                    setEnableTitre(false);
                }
            });
            mainDialog.titreRadioButton.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    titreRadioButtonActionPerformed(evt);
                }
            });
     
     
            //setEnableGenre(false);
        }
    Quand je fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
         for(int t=0;t<adressePanel.perCatCombo.getItemCount();t++){
     
     
              String k  =  (String)adressePanel.perCatCombo.getItemAt(t);
     
              log.debug(k);
     
           }
    J'obtiens cela:
    2009-11-10 13:23:02,747 DEBUG [AWT-EventQueue-0] PersonDialog$1 - Elus du ddd français
    2009-11-10 13:23:02,747 DEBUG [AWT-EventQueue-0] PersonDialog$1 - Famille du ddd français
    2009-11-10 13:23:02,763 DEBUG [AWT-EventQueue-0] PersonDialog$1 - Invités des directeurs
    2009-11-10 13:23:02,763 DEBUG [AWT-EventQueue-0] PersonDialog$1 - Invités institutionnels
    2009-11-10 13:23:02,763 DEBUG [AWT-EventQueue-0] PersonDialog$1 - Famille du dd international
    2009-11-10 13:23:02,763 DEBUG [AWT-EventQueue-0] PersonDialog$1 - Famille du ddd

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Points : 39
    Points
    39
    Par défaut
    Si tu veux qu'il n'y ait pas d'erreurs de compilation il faut, je pense, que tu remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Item {...}
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Item extends String {...}
    car je suppose que getSelectedItem renvoit un String d'après l'erreur.

    Quel est le type de perCatCombo ?

    Mais comme je ne sais pas ce que tu veux, je ne peux pas te dire si ca va avoir le comportement que tu recherches.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Points : 295
    Points
    295
    Par défaut
    Je suis pas sur d'avoir tout bien saisi mais

    tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Item)adressePanel.perCatCombo.getSelectedItem()
    ton erreur
    java.lang.String cannot be cast to Item
    veut dire :

    "adressePanel.perCatCombo.getSelectedItem()" est de type String
    et toi tu essaye de le caster en Item ....

    tu peux faire la solution de Cbonniot mais à mon avis il y a un soucis de conception

    Bon courage

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Citation Envoyé par Cbonniot Voir le message
    Si tu veux qu'il n'y ait pas d'erreurs de compilation il faut, je pense, que tu remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Item {...}
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Item extends String {...}
    Bien sûr que non ! String est final, et pour de très bonnes raisons. On ne peut pas l'étendre.

    De toute façon, le problème n'est pas ça.

    J'imagine que perCatCombo est une JComboBox et donc que ses méthodes getItemAt() et getSelectedItem() renvoient un Object qui doit être casté vers la classe utilisée. Comme le cast vers String après un getItemAt() marche (et aussi comme la ComboBox est éditable sans utiliser d'éditeur custom,) ça signifie que les objets sont des String.

    Ce ne sont donc pas des objets Item et ils ne peuvent pas être castés comme Item. Il ne faut donc pas le faire, et se débrouiller autrement.

  7. #7
    Membre actif Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Points : 254
    Points
    254
    Par défaut
    Si tu nous donne le bout de code de la declaration de ta combo (et des elements ratachés) ont pourrai peut etre voir ce qui cloche

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/01/2015, 10h33
  2. Réponses: 2
    Dernier message: 19/07/2013, 09h20
  3. Réponses: 5
    Dernier message: 01/05/2012, 13h25
  4. Réponses: 2
    Dernier message: 24/05/2011, 10h16
  5. Réponses: 1
    Dernier message: 26/04/2010, 11h03

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