Ne mets pas 'm' en static :roll:
Version imprimable
herve91,
si je fais ce que tu dis, j'ai une erreur
c'est dû a quoi?Code:
1
2
3
4
5 Exception in thread "main" java.lang.Error: Unresolved compilation problem: m cannot be resolved to a variable at Main.<init>(Main.java:37) at Main.main(Main.java:25)
Merci.
Code:JPanel pan = new Panneau(this);
Ce n'est pas la solution avec un grand "L" je l'admet... disons que ca fontionne.
Mais puisque le main est unique, pourquoi ne pas appliquer le principe du singleton?
Ca te donne accès au main de n'importe ou en faisant Main.getInstance();Code:
1
2
3
4
5
6
7
8
9
10
11 private static Main m = null; private Main(){ } public static Main getInstance(){ if(m==null){ m=new Main(); } return m; }
Je ne vois pas l'intérêt de mettre le Main en singleton, ce n'est pas un gestionnaire de ressources, et qui plus est les autres classes ne devraient même pas le connaître (c'est une classe de "haut" niveau). La classe Main est instanciée dans la méthode main(String[]), donc pas de souci. Il est toujours préférable de se passer de variables statiques, et accessoirement de singletons.
mon code suscite beaucoup de commentaires à ce que je vois :)
Merci à tous les 2 pour votre aide,étant donné que la classe Main est une classe de haut niveau et que les autres classes ne devraient pas la "voir", comment est ce vous auriez fait si vous aviez un label dans la classe main et qu'il faille le changer depuis un autre endroit.
Ou alors est ce que vous n'auriez même pas proceder de la sorte?
Le mieux est de faire que ce soit l'objet à mettre à jour qui écoute le changement de score et le répercute.
En effet, si tu changes ton JLabel et que tu le met dans une autre classe demain, tu va devoir revoir ta structure (il ne faudra plu passer le Main en paramètre de ton Panneau par exemple).
Bonjour à tous,
Personnellement, j'opterai pour une class model représentant le score, et l'utilisation du pattern Observer permettant à d'autres class de suivre la progression de ce score.
Là, on parle juste de l'affichage de ce score dans une fenêtre, mais lorsque le score va évoluer, il y aura peut-être d'autres choses à suivre : vie supplémentaires, augmentation du niveau de difficulté, etc.
Après, pour débuter et avoir une solution pas trop complexe, la class main en singleton n'est pas si mal je trouve. Ca permet de débuter sur un pattern relativement simple. Si il ouvre cette fenêtre via un bouton, cela lui permettra aussi de n'avoir qu'une fenêtre au lieu d'en avoir une à chaque clic.
Je persiste à dire que la classe Main n'a rien à faire avec un singleton ! C'est la classe principale de l'application, il n'y en a qu'une seule instance, créée par la méthode "main"
Le pattern singleton est généralement réservé pour contrôler/gérer l'accès à une ressource.
Avec tous ces commentaires, je suis un peu perdu :)
je sais pas pourquoi mais j'aime bien l'idée de Caalador d'utiliser un pattern Observer (meme si je ne sais pas exactement ce que c'est), mais c'est vrai que d'autres labels devront etre modifiés, donc c'est peut etre pas une mauvaise idée.
Qu'en penses tu?
Bonne idée, c'était esquissé dans le post 5570211
avec l'alternative d'une classe Notifier permettant de transmettre les modifications à d'autres classes... mais le pattern Observateur est beaucoup plus généraliste et adaptable.