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 :

[JTextArea] Rafraîchissement du contenu


Sujet :

Composants Java

  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 35
    Par défaut [JTextArea] Rafraîchissement du contenu
    Bonjour,
    alors comme dit dans le titre j'ai un JTextArea qui a un peu de mal à ce rafraîchir.
    J'ai donc testé 3 types de code.(info : mon JTextArea ce nome consol)

    Le premier, qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void testValide() {
            consol.setText(consol.getText()+"test");
    }
    Le deuxième :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public void testValide() {
            consol.setText(consol.getText()+"test");
            int i =0;
            while(i != 20000)
            {
                i++;
                System.out.println(i+"\n");
            }
    }
    La problème, le "test" s'affiche après que le while est fait le tour or je veux qu'il s'affiche avant qu'il commence.

    La troisième :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void testValide() {
            ecrirconsol("test\n");
            int i =0;
            while(i != 20000)
            {
                i++;
                System.out.println(i+"\n");
            }
    }
    public void ecrirconsol(String phrase) {
            consol.setText(consol.getText()+phrase);
    }
    Et la, même résultat qu'en 2.

    Pourquoi ?
    J'attends vos réponse avec impatience.
    Merci d'avance.

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Août 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 265
    Par défaut
    Juste avant ton while, essaye de mettre un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    consol.setCaretPosition(consol.getDocument().getLength());

  3. #3
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 35
    Par défaut
    Citation Envoyé par Larger Voir le message
    Juste avant ton while, essaye de mettre un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    consol.setCaretPosition(consol.getDocument().getLength());
    Tous d'abord merci de t'as réponse et ensuite elle n'a rien changée

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Août 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 265
    Par défaut
    Hum attend je viens de voir un truc !
    Pourquoi faire un setText, alors qu'un insert fait la même chose sans pour autant effacer ce qui était déjà présent dans ton JTextArea


    Fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    consol.insert("test",consolgetDocument().getLength());
    à la place de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    consol.setText(consol.getText()+"test");

    Après moi mon texte se rafraîchit avec ça. Donc si ça marche pas, c'est que je comprends pas mon code

  5. #5
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 35
    Par défaut
    Moi aussi il se rafraichit, mais il se rafraichit après que le while est "tourné".

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 15
    Par défaut EDT
    Salut,

    Le problème de rafraîchissement de l'affichage vient de ce que la boucle effectue 20000 itérations, ce qui est relativement lourd. Ce genre d'opérations ne doit normalement pas être effectué dans le thread gérant l'affichage des fenêtres (EDT), mais dans un thread séparé. Il existe plusieurs façons d'écrire un thread de calcul et certaines sont exposées dans les tutoriels de ce site, par exemple :

    Avec invokeLater() :

    http://gfx.developpez.com/tutoriel/j...ing-threading/

    Avec SwingWorker :

    http://rom.developpez.com/java-swingworker/

    Malheureusement, je ne peux pas t'aider beaucoup plus que ça pour le moment. J'ai le même problème que toi avec un JLabel qui ne s'actualise pas et j'en suis encore à chercher la solution.

    chrisRg2r

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 15
    Par défaut
    Salut,

    je viens de résoudre mon problème et je pense que la solution consiste à faire une classe étendant SwinWorker en mettant le max de code ne concernant pas l'affichage dans la méthode doInBackground() et de récupérer un paramètre par la méthode publish pour mettre la fenêtre à jour au fur et à mesure.

Discussions similaires

  1. [JLabel][SwingWorker] Rafraîchissement du contenu
    Par chrisRg2r dans le forum EDT/SwingWorker
    Réponses: 2
    Dernier message: 22/08/2008, 01h49
  2. [JFileChooser] Enregistrer le contenu d'un JTextArea
    Par soujava dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 24/04/2008, 12h08
  3. recuperer le contenu d'un fichier txt dans un JTextArea
    Par fraisa1985 dans le forum Composants
    Réponses: 1
    Dernier message: 09/02/2008, 12h25
  4. tester le contenu d'un jTextArea
    Par delma dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 10/10/2006, 23h53
  5. Réponses: 1
    Dernier message: 22/05/2006, 07h16

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