[JTextPane][JScrollBar] problème de défilement
Bonjour,
J'ai pas mal googlé sans trouver de réponses donc voici mon problème.
J'utilise un Jtextpane pour afficher un chat, ça marche très bien, j'utilise un petit bout de code simple pour scroller quand une ligne est ajouté et seulement si l'utilisateur était déjà en bas du chat.
Code:
1 2 3
| JScrollBar vbar = parent.scrollchatField.getVerticalScrollBar();
boolean autoScroll = ((vbar.getValue() + vbar.getVisibleAmount()) > vbar.getMaximum()-5);
if( autoScroll ) this.setCaretPosition(doc.getLength()); |
Une petite bidouille avec le -5 car le scrolling ne s'appliquait pas toujours sinon.
A la demande de mes joueurs je me suis décidé à ajouté des smileys dans le chat. Après pas mal de recherche, j'arrive à un résultat niquel, je parse chaque phrase ajoutée dans le chat et remplace par des smiley en fonction d'une hashmap. Je vous passe le code car je pense pas que ce soit le nerf du problème, je peux le mettre sur demande.
Le seul et unique petit désagrément qu'il me reste c'est que j'ai beau scoller mon JTextPane tout en bas avec le code plus haut, si le smiley inséré est plus grand verticalement que ma taille d'écriture, alors j'ai un problème d'affichage.
Je met une copie d'écran illustrant le problème, sachant que la scrollbar est bien scrollé tout en bas, le GUI permet pas en l'état d'afficher la ligne en entier :
http://www.nacros.net/perso/problem.jpg
PS : autre petit problème mais moins important, quand j'insère un gif animé, le gif boucle et ça fait un effet de flickering quand il reprend l'anim au début. Je vais surement mettre des gif non animés du coup.