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 :

Casting Dynamique et l'inserer dans jComboBox ?


Sujet :

AWT/Swing Java

  1. #1
    Membre éclairé
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 279
    Par défaut Casting Dynamique et l'inserer dans jComboBox ?
    Bonjour,

    Mon probleme est le suivant :

    J'ai une jComboBox qui va devoir contenir des Identifiants de personnes chargés depuis un vecteur (Vector).

    Dans mon Vector, il y a plusieurs types de personnes. (des sous-classes différentes de personnes et chacune de ces sous-classe implémente l'interface IDENTIFIABLE).

    En gros, pour récupérer l'Identifiant d'une personne, je dois faire : MaPersonne.GetIdentifiant.GetID();

    Je parcours mon vecteur avec une Enumeration e.

    L'ennui, pour insérer l'identifiant dans mon jComboBox , je dois effectuer le BON CASTING pour accéder à l'interface !!

    Voici un exemple qui fonctionne lorsque je spécifie STATIQUEMENT le type de personne : (personnehandicapee)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Enumeration e = VecteurPersonnes.elements();
            while(e.hasMoreElements())
            {
                obj = e.nextElement();
     
                jCBPers.addItem( ((PersonneHandicapee) obj.GetIdentifiant().GetID() ) );
     
            }
    J'aimerais en gros, pouvoir faire ceci :

    ====> Caster l'objet "obj" avec sa propre classe.

    Mais ça ne fonctionne pas ... Cannot resolve Symbol.

    Une idée de comment réaliser cet exploit ?

    Merciii

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    A ma connaissance, il n'est pas possible de caster dynamiquement en Java. Il te faut donc caster statiquement. Cependant, l'instruction instanceof peut t'y aider car elle permet de tester si un objet est du bon type avant de le caster. Utiliser instanceof sur un objet null retourne toujours false.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (value instanceof IDENTIFIABLE) {
      IDENTIFIABLE MaPersonne= (IDENTIFIABLE)value;
      MaPersonne.GetIdentifiant().GetID(); 
    }
    Note : il existe quelques regles et conseils/suggestions dans la presentation d'un code en Java :
    - les identificateur en MAJUSCULES sont en general reserves aux constantes statiques finales.
    - les nom de classes et d'interfaces ont uniquement leur PREMIERE lettre en majuscule (et de maniere classique la premiere lettre de debut de chaque sous-mot en MAJUSCULE).
    - les noms d'instances/variables ont leur premiere lettre en MINUSCULE (et de maniere classique la premiere lettre de debut de chaque sous-mot en MAJUSCULE).
    - les noms de methodes ont leur premiere lettre en MINUSCULE (et de maniere classique la premiere lettre de debut de chaque sous-mot en MAJUSCULE).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (value instanceof Identifiable) {
      Identifiable maPersonne= (Identifiable)value;
      maPersonne.getIdentifiant().getID(); 
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre éclairé
    Étudiant
    Inscrit en
    Janvier 2004
    Messages
    279
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2004
    Messages : 279
    Par défaut
    Merci pour ta réponse.

    J'ai trouvé l'astuce ... En fait, je caste l'objet avec l'interface qui permet d'implémenter et de récupérer l'identifiant. ça fonctionne.
    Ce qui donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jCBPers.addItem( ((EstIdentifiable) obj).GetIdentifiant().GetID());
    EstIdentifiable étant l'interface implémentée par tous les types d'objet de l'application.


    Bien conscient de tes remarques sur les normes de syntaxe, on est mal parti et on a plus le temps de changer tout pour l'instant .

    Sur ce, je v continuer encore du pain sur la planche.

    Merci encore.

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

Discussions similaires

  1. Cast dynamique dans class generique
    Par topolino dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/03/2009, 16h21
  2. j'arrive pas a inserer dans une table vide
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 16
    Dernier message: 03/05/2005, 14h24
  3. [DP][héritage]sous-casting dynamique
    Par Le prophete dans le forum Général Java
    Réponses: 4
    Dernier message: 20/08/2004, 11h56
  4. [LG]inserer dans une liste chainee
    Par jaabouc dans le forum Langage
    Réponses: 4
    Dernier message: 19/04/2004, 00h44

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