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
Voila, si quelqu'un a une idée....
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
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(); }
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
Partager