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 :

Modification d'un JLabel depuis une autre classe


Sujet :

AWT/Swing Java

  1. #21
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Citation Envoyé par bigram Voir le message
    Merci Kaoualeo,

    maintenant ca fonctionne bien, le score augmente en effet quand la brique se casse.

    Maintenant, il me reste plus qu'a essayer de comprendre ce que tu as fait pour que ca fonctionne
    Et surtout de voir comment j'aurais pu faire autrement plus facilement.
    Ne mets pas 'm' en static

  2. #22
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    herve91,

    si je fais ce que tu dis, j'ai une erreur

    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)
    c'est dû a quoi?

    Merci.

  3. #23
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JPanel pan = new Panneau(this);

  4. #24
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 48
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par herve91 Voir le message
    Non, quelle idée de mettre 'm' static !!
    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?

    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;
    }
    Ca te donne accès au main de n'importe ou en faisant Main.getInstance();

  5. #25
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    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.

  6. #26
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    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?

  7. #27
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 48
    Points : 47
    Points
    47
    Par défaut
    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).

  8. #28
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    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.

  9. #29
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    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.

  10. #30
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    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?

  11. #31
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/04/2007, 16h31
  2. GC appel depuis une autre classe
    Par dark2 dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 09/06/2006, 05h53
  3. JProgressbar qui avance depuis une autre classe....
    Par Baptiste Wicht dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 02/02/2006, 20h04
  4. [Débutant] Lancer procédure depuis une autre classe
    Par pugnator dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2005, 14h50
  5. 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