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 :

[JScrollPane]Comment savoir quand une scrollbar apparait ?


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 32
    Points : 23
    Points
    23
    Par défaut [JScrollPane]Comment savoir quand une scrollbar apparait ?
    Salut à tous,

    j'utilise un JScrollPane avec un scrollbar vertical toujours invisible, et un horizontal "as needed". J'aimerais bien savoir s'il est possible d'ajouter un événement à mon scrollpane pour savoir quand la barre horizontale apparait !

    En effet j'ajoute des images dans le scrollpane, les unes à la suite des autres (horizontalement), et ce de façon dynamique. Quand l'espace occupé devient trop grand, le scrollbar horizontal apparait en bas, mais bouffe de la place dans l'espace d'affichage du JScrollpane, dans sa hauteur. Le scrollbar a sa taille qui lui est propre !

    A ce moment, je décide de redimensionner tous mes dessins (surcharge du paintComponent(Graphics g) du scrollpane), pour qu'ils puissent s'adapter à la nouvelle hauteur du scrollpane, et pour qu'ils soient entièrement visibles dans leur hauteur, sans avoir besoin d'une scrollbar verticale; et pour conserver les proportions, je réduis leur largeur en même temps que leur hauteur.

    Mais si l'utilisateur n'a pas de chance, la taille "économisée" en largeur fait que tous les dessins rentrent à nouveau dans la taille "standard" du scrollpane, sans avoir besoin de la scrollbar horizontale.

    Dans ce cas -> la scrollbar horizontale disparait, ce qui me ramène à redimensionner les dessins, qui deviennet à nouveau trop grands -> la scrollbar réapparrait.. Et j'ai un joli bug graphique avec mes images qui tremblent !

    Alors je pourrais résoudre le problème en mettant la scrollbar horizontale toujours visible, ce qui ne changerait jamais l'"espace disponible en hauteur pour l'affichage". Mais ça me fait perdre de la place quand je n'en ai pas besoin...

    Le mieux serait de savoir quand la scrollbar apparrait, et à ce moment, augmenter la taille de *tout* mon scrollpane, pour que l'espace dispo ne change pas. La scrollbar apparraitrait "en bas" du scrollpane, plutot que "dedans".

    Quelqu'un a t-il une solution à me proposer ? Je pourrais comparer les tailles du jscrollpane et celle du component qu'elle contient; mais si mon calcul est inexact, même de qqes pixels (si, par exemple, j'oublies les 2 ou 3 pixels du trait de la bordure, ou un truc tordu dans ce genre), et que l'utilisateur n'a pas de chance, le bug va apparaitre !

    Merci beaucoup !

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 15
    Points
    15
    Par défaut Re: [JScrollPane]Comment savoir quand une scrollbar apparait
    Citation Envoyé par FrigoAcide
    Quelqu'un a t-il une solution à me proposer ? Je pourrais comparer les tailles du jscrollpane et celle du component qu'elle contient; mais si mon calcul est inexact, même de qqes pixels (si, par exemple, j'oublies les 2 ou 3 pixels du trait de la bordure, ou un truc tordu dans ce genre), et que l'utilisateur n'a pas de chance, le bug va apparaitre !
    Essaie de mettre 4 à 5 pixels de plus comme ça y a une légère marge parce que sinon je ne pense pas qu'il y est d'évenement pour ça ... tu peux peutre être créer l'evenement toi même mais c'est un peu plus lourd. je pense que le calcul fera l'affaire ... essaie de ne pas voir trop juste et fait des essais

    Sinon tu met un bouton "anti-bug" à coté ... et l'utilisateur clique dessus pour agrandir si y a un bug 8) lol

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 32
    Points : 23
    Points
    23
    Par défaut Re: [JScrollPane]Comment savoir quand une scrollbar apparait
    Citation Envoyé par Ulmo37
    Sinon tu met un bouton "anti-bug" à coté ... et l'utilisateur clique dessus pour agrandir si y a un bug 8) lol
    bonne idée ! Mais je pense que je vais plutôt laisser la scrollbar affichée en permanence.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 34
    Points : 29
    Points
    29
    Par défaut
    c ptet un peu tard mais g une solution pour savoir t JScrollBar sont caché.
    faut leurs ajouter un ComponentListener et implementer la methode componentHidden(ComponentEvent e).
    ouala, c tout con mais pas facile a trouver!

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par La Truffe
    c ptet un peu tard mais g une solution pour savoir t JScrollBar sont caché.
    faut leurs ajouter un ComponentListener et implementer la methode componentHidden(ComponentEvent e).
    ouala, c tout con mais pas facile a trouver!
    Merci pour ta réponse; c'est jamais trop tard, pense à toutes les générations futures qui vont galérer sur le même problème et trouveront la solution dans les forums de developpez.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/10/2008, 18h56
  2. Comment savoir quand une requête ne retourne rien
    Par veriecherie dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 29/07/2008, 14h16
  3. Comment savoir quand une base a été redémarrée?
    Par farenheiit dans le forum Administration
    Réponses: 2
    Dernier message: 17/12/2007, 11h42
  4. Réponses: 3
    Dernier message: 31/07/2006, 09h34
  5. Comment savoir quand une JFrame est rafraichie?
    Par mardona dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 19/08/2005, 12h20

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