1. #1
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 1
    Points : 0
    Points
    0

    Par défaut Problème repaint() composant (mise à jour)

    Bonjour à tous !
    Alors, je m'explique.
    J'ai une classe StdGraphModel qui représentente un graphe. (ce n'est pas un thread ni la classe contenant le main)
    Dans une méthode, je colorie tous les sommets.
    J'aimerai un délai d'attente entre chaque colorisation (c'est à dire entre 2 lignes de code) pour que l'on voit bien le coloriage se faire.
    Mon affichage à mettre à jour est géré par une autre classe dans laquelle je fixe le modèle.
    Sur ce modèle j'ajoute un observer qui fait un repaint(). Dans cette classe, j'ai redéfinit paintComponent.
    un bout de code :
    La vue est un Paint comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Paint(GraphModel m) {
        if (m == null) {
    	throw new IllegalArgumentException("m non null");
        }
        model = m;
        model.addObserver(new Observer() {
            public void update(Observable o, Object arg) {
           	   repaint();
            }
        });
    }
    Ce qui me permet de mettre la vue à jour à chaque changement du modèle.
    Ma méthode de colorisation est dans la classe du GraphModel.
    Aussi dans cette méthode, j'ai essayé d'ajouter des setChanged() pour que la vue se rafraichisse et des notifyObservers(). Mais que ce soit avec des Timer ou des Thread.sleep, le résultat est toujours le même : la vue attend le temps total de la colorisation pour tout afficher colorié ...
    Je ne vois pas comment faire pour qu'elle se mette bien à jour à chaque changement de couleur ..

    Pourtant dans ma méthode de colorisation j'ai bien mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    changer couleur sommet
          //On notifie qu'on a changé la couleur d'un sommet
          setChanged();
          notifyObservers();
          //On endort le processus pour voir l'affichage
          try {
              Thread.sleep(3000);
          } catch (InterruptedException e1) {
    	   e1.printStackTrace();
          }
    Après plusieurs tests, mon observer a l'air d'être bien mis au courant du changement..
    Mais apparemment mon repaint() ne fait pas toujours appelle à mon paintComponant que j'ai redéfinit ...
    Pouvez-vous m'aider ?
    Je ne comprends pas ?!


    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    janvier 2007
    Messages
    1 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : janvier 2007
    Messages : 1 331
    Points : 1 791
    Points
    1 791

    Par défaut

    Pour bien pouvoir te répondre, il faudrait que tu nous indique quels sont les threads de ton application.
    Tu as bien un thread principal qui colorie et un autre qui s'occupe de l'affichage ? Ou tu as tout fait faire au même thread ? (ce qui expliquerait le comportement que tu as)

Discussions similaires

  1. Problème avec ma mise à jour
    Par gorgonite dans le forum Ubuntu
    Réponses: 17
    Dernier message: 04/05/2007, 17h03
  2. [FEDORA] Problème avec la mise à jour du kernel
    Par Davidbrcz dans le forum RedHat / CentOS / Fedora
    Réponses: 4
    Dernier message: 23/02/2007, 10h58
  3. Problème SQL SAGE Mise à jour
    Par yancimer dans le forum MS SQL-Server
    Réponses: 1
    Dernier message: 05/10/2006, 21h35
  4. Problème récurrent de mise à jour
    Par r@phy dans le forum Access
    Réponses: 8
    Dernier message: 10/02/2006, 13h19
  5. Problème d'une mise à jour
    Par Hamdi dans le forum Access
    Réponses: 2
    Dernier message: 17/09/2005, 13h57

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