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

Composants Java Discussion :

Problème de synchronisation dans un JTextArea


Sujet :

Composants Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Problème de synchronisation dans un JTextArea
    Bonjour,

    Je développe actuellement un outil qui doit exécuter des scénarios écrits dans un pseudo-langage que j'ai créé. L'outil marche en mode texte, et je cherche maintenant à lui ajouter une interface graphique.

    Le comportement que je souhaite obtenir est le suivant : lors de la lecture de certaines lignes du scenario, un affichage doit se produire dans un JTextArea.

    Pour l'instant, j'ai créé une JFrame, à l'intérieur de laquelle j'ai placé un JPanel contenant un JTextArea et un bouton "start" permettant de lancer l'exécution du scénario. Mon problème est le suivant : le scenario s exécute correctement, et une fois qu'il s'est terminé, tout le texte qui devait s'afficher dans mon JTextArea s'affiche d'un coup. Ce que je souhaiterai en fait c'est que les affichages s'effectuent au fur et à mesure de la lecture du scénario, et ne pas devoir attendre la fin.
    J'obtiens le comportement que je souhaite si je ne crée pas de bouton "start" et si je lance l'exécution du scénario après la création de ma Frame, mais ce n'est pas acceptable, il me faut un bouton pour lancer cette exécution. Il s'agit sans doute d'un problème de gestion d'évènements avec mon bouton, mais je n'ai plus d'idées :-(

    Si quelqu'un a déjà été confronté à ce problème, ou si quelqu'un a une idée sur la chose, qu'il me fasse signe ;-) Merci d'avance!

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    Ceci est tout a fait normal !
    Swing est monothread.
    Tant que ton traitement ne seras pas terminé, aucun autre évènement swing ne seras traité.

    Tu doit donc lancer ton traitement dans un Thread a part.
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      btnStart.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Thread t = new Thread() {
              public void run() {
                monScript.commenceLeTraitement();
              }
            }
            t.start();
          }
        }
      );
    Une fois la méthode Start lancée, la méthode actionPerformed rend la main au thread Swing qui pourras ensuite traiter toutes les autres requetes comme les affichages.
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  3. #3
    Membre actif
    Avatar de narkotik
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Points : 229
    Points
    229
    Par défaut
    un thread p-e ? :o
    (+mitch): nan mais nanar j'préfère mourir contre un platane apres un accident de voiture plutot que d'une rupture d'anévrisme devant mon ecran d'pc

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup Alwin, ça marche nickel !!!
    Merci à toi aussi narkotik ;-)

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 12/08/2014, 18h49
  2. Problème d'utilisation de append() dans un JTextArea
    Par youssoupha29 dans le forum NetBeans
    Réponses: 0
    Dernier message: 04/06/2012, 15h33
  3. Réponses: 3
    Dernier message: 11/04/2012, 11h00
  4. Réponses: 17
    Dernier message: 07/05/2010, 12h22
  5. Problème dans un JTextArea...
    Par david092 dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 29/03/2006, 17h36

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