JScrollPane et JTexArea - Java - Programmation
Marsh Posté le 18-02-2004 à 17:43:51
je retrouve, plus la propriété, c'est bizare.
il faut 1) ne pas tout réécrire à chaque fois mais faire des mises-à-jour, c'est beaucoup plus léger, et surtout, ça ne déplace pas le curseur, qui fait se déplacer l'ascenseur.
2) dans une première étape de modification, sauver la position du curseur avant de tout réécrire et le remettre à la place précédente après réécriture, c'est pas parfait (because wrapping, de mots etc.) mais en attendant de faire le 1), ça peut aider.
Marsh Posté le 18-02-2004 à 21:39:46
Le probleme est que pour faire une update je suis obligé de tout recopier vu que je change chaque ligne non ?
Sinon je ne trouve pas la manière pour sauver une position de curseur
Marsh Posté le 18-02-2004 à 21:54:06
full_phil a écrit : Le probleme est que pour faire une update je suis obligé de tout recopier vu que je change chaque ligne non ? |
http://java.sun.com/j2se/1.4.2/doc [...] Position()
http://java.sun.com/j2se/1.4.2/doc [...] ition(int)
Marsh Posté le 18-02-2004 à 22:21:11
merci,
mais cela ne marche toujours pas... Je remplis les champs avec un setText pour la premiere ligne et un append pour les autre c la bonne méthode ?
Marsh Posté le 18-02-2004 à 22:31:03
Ah si cette fois ca marche sauf que : lol, bin.... là la scrollbar est bloquée de la meme maniere que à mon premier probleme mais cette fois en haut du JTextArea et qui fait que dès que je veux faire défiler vers le bas ca me le remonte automatiquement
Marsh Posté le 18-02-2004 à 22:37:40
non sûrement pas.
Au pire tu fais un setText() avec tout le texte d'un coup.
Mais le mieux, c'est de récupérer le Document par getDocument() et de faire des insertString et des remove() dessus aux bons endroits.
edit : tu peux passer null au dernier paramètre de insertString().
Marsh Posté le 19-02-2004 à 03:27:00
Bon, pour la premiere ligne ca marche parfaitement, mais je n'arrive pas avec l'offset à passer à la ligne....En ajoutant 1 ou même autre chose ca me le laisse sur la première ligne
Ca doit etre simple mais je bloque
Marsh Posté le 19-02-2004 à 13:37:51
full_phil a écrit : Bon, pour la premiere ligne ca marche parfaitement, mais je n'arrive pas avec l'offset à passer à la ligne....En ajoutant 1 ou même autre chose ca me le laisse sur la première ligne |
Dans un Document, tout se compte en caractère (en glyphe plus exactement). Il n'y a pas de notion de ligne.
Marsh Posté le 19-02-2004 à 14:19:47
J'ai avancé, et j'arrive à mettre à jour tout le JTExtArea (je faisais des tests pas assez complets), mais que ce soit avec un grand setTExt ou avec les insertString et remove, j'ai toujours ce problème de défilement bloqué.
Quand j'initialise pour la première fois le JTextArea, je suis obligé de modifier à la main la position du curseur avec les CaretPosition, et il semble me garder cette configuration. Mon JTextArea est static, cela vient peut-etre de ca ?
Marsh Posté le 19-02-2004 à 14:40:45
full_phil a écrit : Mon JTextArea est static, cela vient peut-etre de ca ? |
impossible.
Marsh Posté le 19-02-2004 à 16:45:03
Tu es sûr que les mises à jour avec remove et insertString ne déplacent pas le curseur ? Car quand je désactive ces MAJ le JTextArea marche correctement... Je me perds dans cette affaire
Marsh Posté le 18-02-2004 à 17:24:32
Voilà j'ai mis un JTextArea dans un JScrollPane, je mets à jour le JTextArea en le réécrivant à chaque fois (c pour tenir à jour des informations genre frames/s, etc...), et il se remets à jour très vite.
Le problème est que le JTextArea étant plus grand que le JScrollPane (cas normal avec la barre de défilement), le JTextArea reste bloqué en bas du défilement, et dès que je veux remonter ça me le redescend automatiquement au prochain refresh... Que faire pour pouvoir naviguer correctement ?