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 :

Récupérer la valeur d'une variable appartenant à une autre classe.


Sujet :

AWT/Swing Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut Récupérer la valeur d'une variable appartenant à une autre classe.
    Bonjour,
    J'ai un petit soucis.
    J'ai une fenêtre principale avec une menu. A partir du menu, j'accède à une fenêtre secondaire. A ce niveau là, avec une ComboBox, je récupère une image d'un plateau de jeu et j'aimerais que le nom de cette image soit enregistrer dans une variable "nom" située dans une autre classe. (une classe dédiée au plateau).
    Pour ceci, j'y accède grâce à une classe Master qui appelle toutes les autres classes. Le problème c'est que dans mon "public void actionPerformed(ActionEvent e)", je n'arrive pas à accéder au master, même en faisant passer le master en argument dans le constructeur "public choix plateau()". J'ai voulu faire une classe master pour accéder à toutes les autres classes comme les structures globales en langage C pour ceux qui connaissent.

    Voici mon code :

    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
    public class ChoixPlateau extends JPanel implements ActionListener 
    {
    JLabel picture;
    //TODO : Problème du master
    //Master master = new Master();
    public ChoixPlateau() 
    {
    super(new BorderLayout());
     
    String[] Strings = {"Plateau 1","Plateau 2","Plateau 3","Plateau 4","Plateau 5","Plateau 6","Plateau 7","Plateau 8","Plateau 9","Plateau 10"};
     
    JComboBox List = new JComboBox(Strings);
    List.setSelectedIndex(0);
    List.addActionListener(this);
     
    // Set up the picture.
    picture = new JLabel();
    picture.setFont(picture.getFont().deriveFont(Font.ITALIC));
    picture.setHorizontalAlignment(JLabel.CENTER);
    updateLabel(Strings[List.getSelectedIndex()]); // On appelle la fonction pour charger les images
    picture.setPreferredSize(new Dimension(175,175));
     
    // Position du label et du comboBox
    add(picture, BorderLayout.PAGE_START);
    add(List, BorderLayout.PAGE_END);
    }
     
    public void actionPerformed(ActionEvent e) 
    {
    JComboBox cb = (JComboBox)e.getSource();
    String Name = (String)cb.getSelectedItem();
    master.plateau.nom = Name; System.out.println(""+master.plateau.nom); 
    // Ici, ci-dessus, il ne veut pas reconnaitre le master.
    updateLabel(Name);
    }
     
    protected void updateLabel(String name) 
    {
    ImageIcon icon = new ImageIcon("./images/Plateaux/Petits/" + name + ".gif");
    picture.setIcon(icon);
    if (icon != null) 
    {
    picture.setText(null);
    } 
    else 
    {
    picture.setText("Image not found");
    }
    }
    }

  2. #2
    Membre actif Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Points : 228
    Points
    228
    Par défaut
    Bah déjà pour ta ComboBox c'est pas plutôt un ItemListener que tu devrais ajouter ?

    Sinon ton problème est où exactement ? Erreur lors de la compilation ou lors de l'execution ? Le System.out.println() juste après l'action affiche quoi ?

  3. #3
    Membre habitué Avatar de titus55
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 115
    Points : 136
    Points
    136
    Par défaut
    Salut,
    bon alors déjà ton post serai plus agréable à lire avec les balises codes

    je n'arrive pas à accéder au master, même en faisant passer le master en argument dans le constructeur "public choix plateau()".
    c'est à dire? Tu obtiens une exception?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    master.plateau.nom
    Comment as tu déclaré tes attributs? (private, protected...)

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut
    Désolé mais je ne sais pas me servire des balises codes, c'est koi ?
    En fait, pour faire clair, je créé un petit jeu d'échecs.
    J'ai une classe master qui regroupe toutes les principales autres, comme ça, grâce à cette classe master, je peux accéder à tous les attributs de toutes les classes. J'ai tout déclaré en public pour ne pas avoir de problème à ce niveau puisque je ne sais pas trop m'en servir.

    Dans mon main principal, j'appelle une fonction initialisation avec comme argument le master et cette fonctionne retourne le master. Avec ce nouveau master initialisé, j'appelle une fonction créerFenetrePrincipale avec comme argument le master initialisé. Dans cette dernière fonction, je crée mon menu et appelle certaines méthodes avec ce même master.
    En clair, je le trimbale partout pour pouvoir accéder à tous les attributs à tout moment.

    Et ce que je disais, c'est que lorsque j'appelle les méthodes de la classe ci-dessus (public class ChoixPlateau ...), plus précisément en appelant le constructeur public ChoixPlateau avec comme argument le master, le master que j'utilise dans la méthode public void actionPerformed n'est pas reconnu.

    Il faudrait juste que j'envoie le master quelquepart pour que dans la méthode public void actionPerformed, il soit reconnu, c'est tout. Evidemment, on ne peut pas ajouter le master dans les arguments de cette méthode (actionPerformed...).

    Comme on le voit dans la classe ci-dessus, je suis obligé de recréer un master pour que ca marche mais en recréant un master, les modifs avec se font sur celui là et non sur le master initialisé préalablement.

    voilà, jesper que j'ai été assez clair.

  5. #5
    Membre habitué Avatar de titus55
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 115
    Points : 136
    Points
    136
    Par défaut
    ok ben récupère ton master initialisé dans ta classe ChoixPlateau (en lui passant dans son constructeur par exemple et en le sauvegardant dans un attribut de ta classe ChoixPlateau).

    Comme ça dans ta méthode ActionPerformed (qui connait ta classe ChoixPlateau) tu appelles le Master initialisé (qui est alors un attribut de ta classe ChoixPlateau).


    PS: pour les balises code :
    http://www.developpez.net/forums/ann...php?f=213&a=19

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut
    C'est une bonne idée, je l'ai fais mais je n'arrive toujours pas au résultat voulu. Je m'explique, j'ai une image plateau sur ma fenêtre principale. Je voudrais que cette image change lorsque je choisis un autre plateau dans ma fenêtre secondaire.
    Au début j'ai initialisé cette image au plateau 1, je voudrais que cette valeur dans master.plateau.nom change quand je choisi un nouveau plateau dans ma fenêtre secondaire.
    Merci pour ton aide. (votre aide à tous ).

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Points : 279
    Points
    279
    Par défaut
    Je vous remercie pour vos idées.
    J'ai réussi, j'ai utilisé ce que tu m'as dis titus. Merci à toi.
    A+

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

Discussions similaires

  1. Réponses: 21
    Dernier message: 18/11/2008, 15h36
  2. Réponses: 2
    Dernier message: 30/10/2008, 14h28
  3. Réponses: 12
    Dernier message: 06/08/2008, 15h39
  4. Recupérer une variable appartenant à une autre "class"
    Par Super_babar dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 15/07/2008, 15h26
  5. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 15h23

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