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








Répondre avec citation
Partager