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

Langage Java Discussion :

Problème de Pattern Observer


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 27
    Par défaut Problème de Pattern Observer
    Bonjour,

    J'ai un petit souci avec un pattern Observer fait maison.

    Je dois transférer un int d'une Frame vers un jpanel mais ca ne réagit pas...
    J'ai dû me tromper quelque part( vraisemblablement la méthode addObserver n'ajout rien à la liste et je ne sais pas pourquoi.

    Voila le code de mes interfaces


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public interface Observable {
     
    	public void addObserver(Observer obs);
    	public void removeObservers();
    	public void updateObserver();
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import javax.swing.JPanel;
     
     
    public interface Observer {
    	public void updateDes(int err);
    }
    Dans ma JFrame :

    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
    this.pang.addObserver(new Observer(){
    			public void updateDes(int err) {
    				// TODO Auto-generated method stub
    				System.out.println("Dans updateDes");
    				if(err<8){
    					String chemin = "images/img"+ err + ".jpg";
    					ImageIcon img = new ImageIcon(chemin);
    					lblDes.setIcon(img);
    					lblDes.setLayout(new BorderLayout());
    					panDes.validate();
    				}
    				//Sinon c'est perdu et on va au panneau panPerdu
    				else{
    					setContentPane(panPerdu);
    				}
    			}
    		});
    et dans mon JPanel qui s'appelle pang :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void updateObserver() {
    		// TODO Auto-generated method stub
    		System.out.println("ListObserv : "+ this.listObserv.size());
    		for(Observer obs : this.listObserv ){
    			obs.updateDes(this.getNbErreur());
    			System.out.println("NB Erreur: "+this.getNbErreur());
    		}
    	}
    J'espère que vous pourrez m'aider.

    Merci en tout cas.

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    Et le code de la méthode addObserver() ?
    Si c'est un problème avec cette méthode, ça doit être visible avec cette trace : System.out.println("ListObserv : "+ this.listObserv.size());

    Au passage, les interfaces Observer/Observable existent dans le jdk, il me parait plus "propre" de les utiliser plutôt que de les "réinventer".

  3. #3
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 27
    Par défaut
    voila la méthode addObserver()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void addObserver(Observer obs) {
    		// TODO Auto-generated method stub
    		this.listObserv.add(obs);
    	}
    Avec la trace, je vois clairement que l'ajout à la liste ListOberv ne fonctionne pas.
    la liste est toujours vide, c'est bizarre.

    j'ai loupé quelque chose quelque part.

    Je n'utilise pas les classes du jdk car j'hérite deja d'une classe.

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    Et la méthode (addObserver) est bien appelée ?
    Toutes ces méthodes sont invoquée sur le même objet (un seul objet "pang") ?
    Il n'y a pas d'appels "intempestifs" à removeObservers() ou une réinitialisation de listObserv ?

    Citation Envoyé par bigram Voir le message
    Je n'utilise pas les classes du jdk car j'hérite deja d'une classe.
    On pourrait on discuter longuement mais... soit

  5. #5
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 27
    Par défaut
    J'avais en effet un pang qui se prélassait là où il ne devait pas

    Merci de ton aide.
    C'est en ordre...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/12/2010, 22h08
  2. Pattern Observer over CORBA ?
    Par swirtel dans le forum CORBA
    Réponses: 4
    Dernier message: 15/09/2006, 14h03
  3. Réponses: 2
    Dernier message: 24/08/2006, 22h39
  4. [Observateur] Précisions sur le design pattern Observer [UML]
    Par joquetino dans le forum Design Patterns
    Réponses: 2
    Dernier message: 07/10/2004, 22h35
  5. Interfaces, Pattern Observer
    Par IProg dans le forum Langage
    Réponses: 8
    Dernier message: 18/12/2003, 14h11

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