IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[JTextPane][JScrollBar] problème de défilement


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 41
    Par défaut [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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :


    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.

  2. #2
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 41
    Par défaut
    Je suis pas assez précis ? je pose une colle ? ma question est con ? :p

    Bon je continue à chercher, mais je ne trouve pas. Il y a bien quelqu'un qui a fait un chat java avec emoticones et qui a rencontré ce désagrément.

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 41
    Par défaut
    J'ai trouvé une gruge. Je laisse systématiquement une ligne blanche en bas du JTextPane pour éviter que la dernière ligne contienne un emoticone et fiche la grouille.

    J'insère à l'initialisation de mon JTextPane un retour à la ligne.

    Par la suite toutes mes insertions se font juste avant ce retour à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.insertString(doc.getLength()-1, "toto", doc.getStyle("defaut"));
    Pour détecter si l'utilisateur suit le chat en temps réel ou bien regarde des vieilles phrases, j'ai agrandi la détection à la scroll barre tout en bas ou bien une ligne au dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JScrollBar vbar = parent.scrollchatField.getVerticalScrollBar();
                boolean autoScroll = ((vbar.getValue() + vbar.getVisibleAmount()) > vbar.getMaximum()-15);
    Et finalement je positionne la barre de scrolling à une ligne de la fin du chat pour pas afficher la ligne vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                if( autoScroll ) this.setCaretPosition(doc.getLength()-5);
    C'est pas top mais le résultat est tout à fait acceptable je trouve.

    Je reste preneur pour une vrai belle solution, je met pas en résolu, ça me convient pas à 100% cette "solution".

Discussions similaires

  1. JTextPane + HTMLEditotKit + problème paste depuis Word
    Par SheikYerbouti dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 06/01/2009, 13h49
  2. [JScrollPane]Problème de défilement avec la molette
    Par Vikisme dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 03/07/2007, 11h27
  3. [PHP-JS] Problème de défilement de ma page
    Par cyberdevelopment dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2007, 17h43
  4. Problème de défilement
    Par shukin dans le forum Autres Logiciels
    Réponses: 12
    Dernier message: 30/10/2005, 20h24
  5. [FLASH MX] Problème pour défilement images
    Par Buzhug dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2004, 21h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo