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

EDT/SwingWorker Java Discussion :

threads & rafraichissement d'affichage


Sujet :

EDT/SwingWorker Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Par défaut threads & rafraichissement d'affichage
    Bonjour à tous,

    Je vais essayer d'exposer clairement mon petit problème :
    J'essaye de réaliser un programme en utilisant une architecture MVC. Lorsque l'utilisateur clique sur un JMenuItem, le contrôleur, qui est à l'affut, demande au modèle d'exécuter une action "complexe" (typiquement, il s'agit d'une distribution de cartes ). Il demande ensuite à la vue d'afficher le résultat de cette opération.
    Mais voilà, j'aimerais qu'au cours de cette action, l'affichage soit rafraichi régulièrement, et non pas seulement lorsque celle-ci s'est terminée. Qu'à cela ne tienne, je me suis dit que le contrôleur pouvait lancer tout d'abord un thread dont la méthode run() comporterait une boucle infinie demandant à la vue de s'actualiser, ensuite de lancer l'action du modèle, puis une fois celle-ci exécutée d'interrompre le thread d'actualisation de la vue.

    Evidemment, ça ne marche pas.
    Lorsque je clique sur mon JMenuItem, le menu déroulant en question reste affiché pendant que mon thread d'actualisation et mon thread principal se déroulent en alternance comme prévu (je peux suivre l'exécution dans la console), mais le rafraichissement graphique ne s'effectue finalement qu'à la fin, lorsque le menu déroulant disparait.

    Donc mes questions sont :
    1) est-ce qu'il s'agit d'un problème d'occupation du contexte graphique par ce menu déroulant, et que de fait, le rafraichissement ne peut s'effectuer que lorsque celui-ci disparait ?
    2) ou bien est-ce que c'est ma méthode de rafraichissement qui est en cause ? Je demande bêtement d'effectuer un revalidate() des panneaux concernés. Est-ce qu'il faut faire autrement ?

    Merci d'avance pour vos réponses, et j'espère que j'ai été suffisamment clair

  2. #2
    Membre chevronné Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Par défaut
    Bonjour,

    Je te conseille de te documenter sur l'EDT, Event dispach Thread, qui est le thread dans lequel en théorie toutes les actions graphiques doivent être effectuées via SwingUtilities.invokeLater...
    Si tu es sous java 6, je te conseille également de regarder vers le SwingWorker qui pourrait peut-être t'aider dans ton problème.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Et dans le cas où tu trouves le SwingWorker extrêmement puissant, mais que tu n'as pas Java6, il existe pour les autres versions de Java sous forme de mini-bibliothèque jar.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Par défaut
    Merci pour vos réponses, je commence donc à me documenter sur le SwingWorker (j'ai bien Java 6), et effectivement ça a l'air puissant, et règlera probablement mes problèmes si je parviens à le maîtriser

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

Discussions similaires

  1. [Python 2.X] Rafraichissement d'affichage : probleme de "return" ?
    Par Ptit_stagiaire dans le forum Général Python
    Réponses: 3
    Dernier message: 12/02/2015, 16h44
  2. [Débutant] Thread qui bloque l'affichage de la form
    Par Shorty369 dans le forum C#
    Réponses: 8
    Dernier message: 27/03/2012, 19h03
  3. Thread et rafraichissement Tkinter
    Par panda31 dans le forum Tkinter
    Réponses: 8
    Dernier message: 25/05/2009, 09h48
  4. problème rafraichissement d'affichage sur CEdit
    Par futurocom dans le forum MFC
    Réponses: 1
    Dernier message: 05/05/2008, 12h34
  5. [MFC] CFormView, Thread et rafraichissement
    Par Philippe299 dans le forum MFC
    Réponses: 6
    Dernier message: 08/09/2005, 16h18

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