Java Swing

Fermé
amani - 29 mars 2012 à 13:04
 amani - 30 mars 2012 à 11:35
Bonjour,

J'aime bien récupérer la valeur d'un item sélectionné dans un comboBox ,GetSelectedItem récupère toujours la premiére valeur dans un JComboBox sans même le sélectionner alors j'ai ajouter un listener au "MyCombo"puis j'ai ajouté cette commande(getSelectedItem) :
public void actionPerformed(ActionEvent e)
{
ch=(String) combo.getSelectedItem();
}
ch retourne l'élément sélectionné et cela c'est que je veux mais le problème est que lorsque je veux utiliser la valeur de "ch" dans un autre endroit dans le code en dehors de"actionPerformed" elle est toujours considéré comme null même si ch est une variable public,j'ai examiné sa valeur avec println mais elle ne prend sa valeur de l'élément sélectionné que dans "actionPerformed" autre elle nulle!!
A voir également:

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
29 mars 2012 à 13:50
C'est surement un problème d'asynchronisme, la méthode actionPerformed est appelée au moment où l'action se produit et le reste du code est indépendant. On peut considérer deux états : avant l'action, où la valeur est null, et après l'action où la valeur est correcte. Selon à quel moment tu utilises cette valeur tu seras dans un cas ou dans l'autre. C'est pour cela qu'en général on fait le traitement complet à l'intérieur du listener avec des variables locales de manière à ne pas avoir d'effets de bords sur les variables globales.
1
merci bcp Monsieur .
0
excusez moi si je pose beaucoup des questions mais je suis encore débutante et je veux bénéficier de votre expérience.
J'ai une autre question :p j'ai une méthode qui retourne les noms des énumérations présentes dans le code soit par exemple elle retourne un tableau nommé enum[] de type String[]. Je veux créé une autre méthode qui prend en paramètre un String qui est un enum[i] càd un nom d'une énumération, et je veux que cette méthode retourne les éléments de cette énumération.
Comment je peux le faire?
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 29/03/2012 à 16:22
Cette méthode existe déjà !

enum Toto { a, b }; 

public static void main(String...args) 
{ 
    Toto x = Enum.valueOf(Toto.class, "a"); 
}
0
Grand merci Monsieur
0
et si je veux afficher tout les valeurs de cette énumérations sans connaitre d'avance leurs valeurs?
Toto x = Toto.valueOf(Toto.class, "a");
cette ligne affiche "a" mais je veux tout afficher sans donner en paramètres leurs noms car cette méthodes va etre utilisé par des énumérations multiples
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
29 mars 2012 à 16:41
Pareil, ça existe déjà :

for (Toto t : Toto.values())
    System.out.println();
0
merci bcp mais le ".values" ou ".valuesOf" s'applique sur une énumération, mais ma question était si je dispose d'un String k par exemple qui a pour valeur le nom de cette énumération: càd String k="Toto";
Comment à partir ce k je peux retourner les valeurs de l'énumération Toto?
0