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 :

[JScrollBar] ralentissements sur un JTextArea


Sujet :

AWT/Swing Java

  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut [JScrollBar] ralentissements sur un JTextArea
    J'ai une JScrollbar dans laquelle j'ai une JTextArea dans laquelle je fais beaucoup de append ...
    Au début ça va mais quand on commence à compter en dizaines de lignes l'appli a tendance à .... Comment dit - on ? ... Ah oui! A RAMER!!!

    On m'a dit qu'il existait un moyen d'empêcher ces ralentissements très peu sympathiques ....

    Oui mais comment?

    merci d'avance

  2. #2
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Bonsoir

    Et si on commençait par regarder le code qui pose problème ?

    yann

  3. #3
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Le code ne pose pas de problèmes en soit c'est juste une constation:
    Plus j'ajoute du texte dans ma JTextArea, plus ça ralentit. N'est - ce pas un problème récurrent?

    voilà mes méthodes qui ajoutent du texte dans la fenêtre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
           //rajoute du texte dans la JTextArea
    	public void printEvent(String message) {
    		zone.append(message+"\n\n");
    		miseAJourJTextArea(aa,zone);
    	}
     
    	public void miseAJourJTextArea(JScrollPane scroll, JTextArea texte){
    		int position = 1;
    		texte.setCaretPosition((int) (position * texte.getDocument().getLength()));
    		JScrollBar jsb = scroll.getVerticalScrollBar();
            jsb.setValue((int) (jsb.getMinimum()+(jsb.getMaximum()-jsb.getMinimum())*position));
        	scroll.revalidate();
    	}
    voilà merci

  4. #4
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Rebonsoir

    J'imagine que la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte.setCaretPosition((int) (position * texte.getDocument().getLength()));
    est là pour placer le caret à la fin du texte, ce qui fait automatiquement scroller la scrollbar à la fin du texte.
    Mais à quoi sert ce code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    jsb.setValue((int) (jsb.getMinimum()+(jsb.getMaximum()-jsb.getMinimum())*position));
        	scroll.revalidate();
    Je demande parce que je n'ai jamais eu de problèmes de ralentissement avec les scrollbars (où que ce soit). Alors avoir des ralentissements au bout de quelques dizaines de lignes est étrange.

    Yann

  5. #5
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    J'avoue que je ne sais pas trop (j'ai pompé ça quelque part).
    Mais j'imagine que c'est pour fair descendre la scrollbar...

  6. #6
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut
    Si on ne fait pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    jsb.setValue((int) (jsb.getMinimum()+(jsb.getMaximum()-jsb.getMinimum())*position));
    scroll.revalidate();
    la srcollbar ne descend pas (j'ai testé)

    mais mon problème de départ est que je n'arrive pas à vider la textArea ...

Discussions similaires

  1. Faire un setText sur un JTextArea dans un évènement
    Par piotrr dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 06/12/2007, 11h01
  2. Scroll sur une JTextArea
    Par titus55 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/08/2007, 09h05
  3. Problème de ralentissement sur Toshiba Satellite P100-473
    Par boss27 dans le forum Ordinateurs
    Réponses: 2
    Dernier message: 03/06/2007, 14h06
  4. Ralentissement sur tâche planifiée
    Par Fifi69 dans le forum Access
    Réponses: 2
    Dernier message: 27/02/2007, 17h47
  5. Réponses: 2
    Dernier message: 12/01/2007, 13h45

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