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 :

Ecriture instantané dans un JTextArea


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 201
    Par défaut Ecriture instantané dans un JTextArea
    Bonjour,

    J'ai une api qui possède une boite de dialogue (un JTextArea). Lorsque je lance une fonction, celle ci prend beaucoup de ressource donc il faut attendre un peu, j'écris dans le JTextArea : "traitement en cours" et à la fin de la fonction "traitement fini".

    Le problème c qu'il écrit tout à la fin.

    J'ai essayé de faire un repaint() du jTextArea avant l'appel de la fonction mais ca ne marche pas.

    Sinon je souhaiterai savoir si c'est possible de changer la couleur du texte que l'on affiche sans changer la couleur totale du JTextArea.

    Merci

    Laurent

  2. #2
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Toute mise à jour de l'interface graphique doit être faite depuis l'Event Dispatch Thread. Fais une recherche sur le forum, il y a plein de post le concernant.
    Concernant ton problème ,tu dois utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SwingUtilities.invokeLater(new Runnable(){public void run(){MonText.append("traitement en cours");}});
    Et pareil pour fin de traitement.
    Tu trouveras plus d'info dans la javadoc


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    >Toute mise à jour de l'interface graphique doit être faite depuis l'Event Dispatch Thread.

    mais non pas tout.
    y'a des exception: repaint, revalidate, paint, setBound, setText, actionPerformed....

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tout dépend desquelles, certaines sont thread safe comme les setText ou getText donc pas besoin de passer par l'evt, d'autres ne le sont pas, c'est au cas par cas... cf post récent de gfx je ne sais plus où

  5. #5
    Membre émérite
    Avatar de bbclone
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 537
    Par défaut
    ben c'est ec que je dis.

    t'imagine a chaque fois qu'on fait une action sur un composant on doit faire comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    ...
    JButton button = new JButton("My Button");
    button.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e) {
                Runnable runnable = new Runnable(){
                    public void run() {
                        // do the work 
                    }
                };
                SwingUtilities.invokeLater(runnable);
         }
    });
    ou chaque fois qu'on fais un setPreferedSize on doit passer par le SwingWorker?

    personne ne ferait du Swing et Swing serait mort depuis longtemps.
    c'est comme tu as di au cas par cas. la majorite des methode ne sont pas thread-safe en swing (au passage tout awt est thread-safe)
    mais certaines methode le sont: repaint, revalidate... faut voir dans la javadoc!

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Erreur de lecture tardive ^^

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/01/2007, 21h14
  2. Réponses: 16
    Dernier message: 13/09/2005, 11h21
  3. Ecriture auto dans un champ edit lors de la modif d'un autre
    Par KibitO dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 05/02/2005, 18h03
  4. Comment effectuer un retour chariot dans 1 JTextarea
    Par elitost dans le forum Composants
    Réponses: 2
    Dernier message: 21/06/2004, 17h18
  5. Problème de synchronisation dans un JTextArea
    Par wutang dans le forum Composants
    Réponses: 3
    Dernier message: 21/06/2004, 15h06

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