herve91,
si je fais ce que tu dis, j'ai une erreur
c'est dû a quoi?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Kaoualeo: Creation de sites web
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).
Kaoualeo: Creation de sites web
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager