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 !