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

 Java Discussion :

Changer texte d'un label depuis une autre classe


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Par défaut Changer texte d'un label depuis une autre classe
    Bonjour,

    J'aimerais changer le label d'une certaine classe, à partir d'une autre classe. Je ne sais pas si cela est possible, mais j'ai fait ceci, sans que ça ne marche :

    Dans ma classe A :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     public final Label label1;
    ....
     public void setLabel1(String msg)
    	 {
    		 label1.setText(msg);
    	 }
    Dans ma classe B :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    classA.setLabel1("Nouveau Message");
    Merci d'avance pour votre aide.
    Bonne journée

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Pour qu'une instance communique avec une autre instance, quelque soit ce qu'on fait, changer le texte d'un JLabel, ou d'une valeur d'attribut, ou n'importe quoi d'autre, il faut effectivement une méthode sur l'instance que l'autre instance va invoquer (ou éventuellement un attribut public).

    C'est exactement le même concept quand on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    classA.setLabel1("Nouveau Message");
    ou
    Aussi faut-il que cela soit la bonne instance. Diffiicile de te répondre plus que ça vu le peu de code que tu montres.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Par défaut
    En fait, j'ai un jeu de Monopoly, et quand j'utilise la fonction acheter appartenant à la classe Joueur, je voudrais que ça me modifie un label dans ma fenêtre principal.

    Dans la classe joueur j'ai fait ceci :
    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
     
    private FenetrePrincipale fenetre;
    ...
    ...
     
    public void acheter(int argent)
     
    	{
    		if(getArgent()-argent < 0 )
    		{
    			//Pas assez d'argent
    			fenetre.setMessageIndication("Vous n'avez pas assez d'argent pour acheter ce bien !"); // Pour afficher sur le label
    		}
    		else
    		{
    			setArgent(getArgent()-loyer);
    			fenetre.setMessageIndication("Vous venez d'acheter cette case, bravo !");
    		}
    	}
    Et dans la classe fenêtre principale :

    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
     
     
    public final Label label1;
    ...
     
    public String messageIndication="";
     
    	 public void setMessageIndication(String msg)
    	 {
    		 messageIndication=msg;
    	 }
     
    ...
     
    private class ValiderReponse implements EventHandler<ActionEvent> {
    		public void handle(ActionEvent event) {
     
                  ...
                  ...
                  joueur.get(indiceJoueur).acheter(case));
                  label1.setText(messageIndication);
                  ...
            }
    }
    Et quand je lance ceci, j'ai un PointerNullException qui se lance, et vient de ça : fenetre.setMessageIndication("..."); (dans la classe Joueur).

    Merci

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par St-42-FCM-57 Voir le message

    Et quand je lance ceci, j'ai un PointerNullException qui se lance, et vient de ça : fenetre.setMessageIndication("..."); (dans la classe Joueur).
    Bah, c'est ce que je disais : il faut que la variable fenetre contienne la référence à la bonne instance de FenetrePrincipale, donc implicitement à une instance de FenetrePrincipale. Ou alors il faut utiliser un modèle et passer par le modèle, mais ça ne change rien question variable et instance.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Par défaut
    Désolé, mais je ne comprends pas trop ce qu'il faut que je rajoute ?
    Ca ne suffit pas dans joueur de mettre " FenetrePrincipale fenêtre " ?

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Non, ça ne suffit pas de déclarer une variable pour qu'elle est une valeur.

    Il faut qu'il y ait quelque part fenetre = <quelque chose (et le bon quelque chose)>;, et au bon moment évidemment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Machin {
     
        public void faitCeci() {
        }
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Truc {
       private Machin machin;
     
       public void faitCeciAvecMachin() {
             machin.faitCeci();
       }
     
    }
    Donc soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Truc {
       private Machin machin;
     
       public Truc(Machin machin) {
            this.machin=machin;
       }
     
       public void faitCeciAvecMachin() {
             machin.faitCeci();
       }
     
     
    }
    soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Truc {
       private Machin machin;
     
       public void setMachin(Machin machin) {
            this.machin=machin;
       }
     
     public void faitCeciAvecMachin() {
             machin.faitCeci();
       }
     
    }
    Soit encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Truc {
       private Machin machin;
     
       public Truc() {
            this.machin=new Machin();
       }
     
       public void faitCeciAvecMachin() {
             machin.faitCeci();
       }
     
     
    }
    il faut une affectation quelque part
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2010, 17h15
  2. JProgressbar qui avance depuis une autre classe....
    Par Baptiste Wicht dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 02/02/2006, 20h04
  3. [Débutant] Lancer procédure depuis une autre classe
    Par pugnator dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2005, 14h50
  4. Acces a un control depuis une autre classe
    Par schnito dans le forum MFC
    Réponses: 5
    Dernier message: 25/01/2004, 22h14

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