Convertir le getSelectedItem() en class

Résolu/Fermé
aure2015 Messages postés 93 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 30 mai 2020 - Modifié le 26 avril 2018 à 19:26
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 26 avril 2018 à 21:18
Bonjour à tous!

Voici mon petit problème. En faite, j'utilise un combobox pour récupérer des valeurs! Le problème ce que le getSelected Item, ne renvoie pas ce que j'ai inséré mais un Object. Serait-il possible de reconvertir l'Object dans afin d'utiliser ces méthodes! Ou alors afficher un label différent de la valeur renvoyée!


Voici un petit code pour aider à la compréhension!

public class MyClass{
    String  Nom;
    String  Prenom;
    String  NumId;

    public MyClass(String Nom, String Prenom, String NumId)
    {
        this.Nom=Nom;
        this.Prenom=Prenom;
        this.NumId=NumId;
    }
public String getNom() {
        return Nom;
    }
    public void setNom(String Nom) {
        this.Nom = Nom;
    }
    public String getPrenom() {
        return Prenom;
    }
    public void setPrenom(String Prenom) {
        this.Prenom = Prenom;
    }
    public String getNumId() {
        return NumId;
    }
    public void setNumId(String NumId) {
        this.NumId= NumId;
    }
    public String toString() {
        return Nom +" "+ Prenom;
    }

}


Initialisation des valeurs et du combobox

main() {
Hashtable MyHashtable = new Hashtable();

MyClass NewClass = new MyClass("Albert","Laurent","1234");
MyHashtable .put(NewClass .getCode(),NewPlat);
 MyComboBox.addItem(NewClass );

NewClass = new MyClass("Jordan","Lejeune","4567");
hash .put(NewClass .getCode(),NewPlat);
MyComboBox.addItem(NewClass );

NewClass = new MyClass("Steve","Dupont","8901");
hash .put(NewClass .getCode(),NewPlat);
 MyComboBox.addItem(NewClass );
}


Récupération des valeurs

private void BtnMouseClicked(java.awt.event.MouseEvent evt) {   
    
MyClass Rechercher=MyComboBox.getSelectedItem();

 if (MyHashtable .containsKey(Rechercher.getNumId())
                 System.out.println("Super");
}

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
26 avril 2018 à 19:48
Bonjour,

À moins de coder dans une (très) vieille version de Java, il n'y a aucune raison aujourd'hui d'utiliser la classe Hashtable (qui est dépréciée depuis Java 2) et devrait être remplacée par HashMap.
De plus les classes Hashtable et JComboBox sont paramétrées (depuis Java 5), cela permet donc de préciser le type de données qu'elles contiennent et d'adapter les types des paramètres et résultats de leurs méthodes.

Remarque : soit ton code est incomplet, soit il est incohérent entre les différents morceaux que tu as montré, par exemple, à quoi correspond la méthode getCode() pour la variable NewClass ? Est-ce que c'est censé correspondre à la méthode getNumId() de la classe MyClass ?

Remarque : les noms de variables devraient commencer par une minuscule, pas une majuscule.

Remarque : les noms de classes, variables etc. devraient être choisies en fonction de leur sémantique dans le programme, pas en fonction de leurs types technique.
Ici tu manipule des personnes, ça devrait apparaître dans le code.

Exemple :

JComboBox<Personne> comboPersonnes = new JComboBox<>();
comboPersonnes.addItem(new Personne("Albert", "Laurent", 1234));
...
Personne selectedPersonne = (Personne) comboPersonnes.getSelectedtem();

Voir : https://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html
1
aure2015 Messages postés 93 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 30 mai 2020 5
Modifié le 26 avril 2018 à 20:43
Bonjour,

Tout d'abord, merci pour ta réponse rapide!

En effet, j'ai fait un exemple à la va vite, pour aider à la compréhension (mon code étant beaucoup plus long!). Donc la première et troisième remarque, ne sont pas à prendre en compte!

Par contre pour ce qui est des variables, je les ai toujours écrites avec la première lettre en majuscule mais si la norme Java est les écrit en minuscule, j'en prend note!

Donc, je pourrait instancier un objet MyClass sans devoir set le model?

EDIT: J'ai répondu à ma question moi même en testant donc en effet pas besoin! Merci de ton aide!
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > aure2015 Messages postés 93 Date d'inscription dimanche 11 janvier 2009 Statut Membre Dernière intervention 30 mai 2020
26 avril 2018 à 21:18
0