Bonjour,
Je doit ajouter des lignes a mon JTextarea (plusieurs milliers) dans une boucle (j'utilise StringBuilder pour concaténer) ça devient vite très très lent a l'affichage comment faire pour optimiser ?
Bonjour,
Je doit ajouter des lignes a mon JTextarea (plusieurs milliers) dans une boucle (j'utilise StringBuilder pour concaténer) ça devient vite très très lent a l'affichage comment faire pour optimiser ?
Salut,
Je ne comprends pas ce que vient faire un StringBuilder dans la notion d'ajout de lignes à un JTextArea (ou plutôt, j'ai peur de comprendre, que tu remplaces le texte complet, au lieu d'utiliser la méthode insert(String str, int pos)). De toute manière, la gestion du modèle de document a ses limites, donc tu auras forcément un ralentissement sur certains fonctionnalités (sauvegarde par exemple, copier tout...). Combien de milliers de lignes tu affiches ? plutôt 3 ou plutôt 150 ? Des lignes de combien de caractères ? Peut-être se poser la question de la pertinence d'un JTextArea, ou d'un composant unique ? Ou d'autres artifices... Dans mon application, j'utilise un composant basé sur le JEditorPane : j'ai des articles de 15000 ou 20000 signes (en html) en production, et l'édition n'est pas la partie la plus lente (je viens de faire un test, et ça se met à ramer vers 300000 lignes (plus de 10 millions de caractères), mais faut dire que la mémoire est montée à 600 Mo pour l'application,( et que j'ai 4 éclipses ouverts plus un indesign), et que j'ai l'impression qu'il y a un problème avec le comptage de lignes qui peine un peu (merci pour m'avoir, indirectement, mis le doigt sur ce problème
)).
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Salut le StringBuilder vient juste pour concaténer la chaîne de caractères que j'ajoute avec la méthode setText j'ai essayer avec insert que je ne connaissait pas c'est carrément plus rapide de plus j'ai retirer la concaténation donc plus de souci sinon il s'agit d'environ 10.000 lignes (pas toujours le cas) pas trés longues merci je met en résolu
10000 lignes : le JTextArea devrait pouvoir les supporter sans problème et sans ralentissement. C'est sûr que si tu fais des setText(), il faut que le composant reconstruise tout le modèle à chaque fois, alors qu'avec insert, seuls les nouveaux caractères vont être transformés en fragment de modèle, qui sera ajouté à la fin du modèle, et ce sera beaucoup plus rapide.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Partager