Bonjour,
Je travaille actuellement sur un projet de jeu (très très modeste).
J'ai une classe Fenetre (héritée de JFrame) contenant un cardLayout qui me permet de naviguer dans les différents écrans (l'écran du jeu lui même, l'écran d'inventaire, celui des options, de la carte...).
J'ai également des tas de boutons pour les diverses actions (déplacements, attaques, menus...).
J'ai aussi tout un tas d'autres classes (Personnage, ainsi que ses classes filles (Guerrier, Archer... sans oublier les méchants Gobelin et autres...)), combat, arme...
Bref j'en viens donc à mon problème :
J'ai une classe Affichage qui continent diverse méthodes (static car des affichages j'en fais un peu partout) avec des bêtes "Systeme.out.print" pour me tenir informer des dégâts, des changements de niveaux ou autre.
C'est bien pratique pour vérifier que tout fonctionne bien quand je code, mais maintenant que ça prend forme, j'ai besoin que ces messages soient visible par l'utilisateur. J'ai donc créé un JLabel dans Fenetre, que je place dans un coin (uniquement s'il contient du texte), jusque là pas de souci.
Mais ensuite je me dit que ce label devrait simplement être de type Affichage (que je fais hériter de JLabel), et comme ça j'ai juste à faire un setText quand j'ai besoin.
Je fais donc ça et ma méthodedevient
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public static void afficheChangeNiveau(int niveau){ System.out.println("Votre niveau augmente. Vous êtes maintenant niveau " + niveau); }
pensant que mon problème est résolu. Et en fait non pas du tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public static void afficheChangeNiveau(int niveau){ setText("Votre niveau augmente. Vous êtes maintenant niveau " + niveau); }
Voila qu'il me dit "non-static method setText(String) cannot be referenced from static context"
Donc ma question est : Comment faire pour modifier le texte de mon label depuis n'importe quelle classe ?
Partager