JScrollPane et partie visible.
Bonjour a tous.
J'ai un JTextArea, contenu dans un JScrollPane.
Le texte contenu dans le JTextArea est régulièrement mis a jour (fonction automatique de colorisation de texte)
Seulement, si je descend dans mon texte avec ma ScrollBar, et qu'un rafraichissement automatique a lieu, je perd "ma partie visible"...en gros il me remonte ma scrollBar au maximum...
Je voudrais savoir quelle méthode utiliser pour réussir a mémoriser la partie 'visible' de mon JTextArea, de sorte qu'une fois la mise a jour terminée, je puisse revenir a mon affichage initial.
J'ai essayé avec pas mal de chose....sans succès
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
public void colorize (){
System.out.println("colorize");
//Sauvegarde d'une éventuelle sélection
int sel_start = jta.getSelectionStart();
int sel_stop = jta.getSelectionEnd();
//Sauvegarde de la position du mon curseur de souris
int mouse_position = jta.getCaretPosition();
//Sauvegarde de ma zone visible...Mais ca fonctionne pas comme cela
Rectangle rect = jta.getVisibleRect();
/**
* Gestion de ma colorisation. En gros, je vire le texte de mon composant, et je le
* regénère
**/
jta.setText("");
StyledDocument doc = jta.getStyledDocument();
addStyletoDoc(doc);
//Je rempli a nouveau mon composant avec des méthodes de ce style
//doc.insertString(doc.getLength(), (String)str.get(i), doc.getStyle("motcle"));
.....
//Position de ma souris
jta.setCaretPosition(mouse_position);
jta.setDocument(doc);
//Récupération de ma sélection
jta.setSelectionStart(sel_start);
jta.setSelectionEnd(sel_stop);
//En principe affichage de mon 'rectangle'....mais ca ne fonctionne pas
jta.scrollRectToVisible(rect);
jta.repaint();
} |
Voila, si quelqu'un a une idée....
Ps...petite question subsidiaire...quelqu'un connait t'il le moyen de changer le nombre d'espaces utilisés par la tabulation...car je trouve ceux par défaut dans java beaucoup trop grand.
Merci d'avance