salut !
je suis retombé sur un problème que j'ai déjà rencontré, et que j'avais résolu, malheureusement mon tour de passe passe ne marche pas cette fois...
alors voilà la configuration
JScrollPane --- JPanel --- JPanel
|- JPanel
|- Jpanel
les noms de variable associés (utiles pour la suite)
scrollPane --- ensImagePanel --- imagePanel1
|- imagePanel2
|- imagePanel3
(en bref, j'ai un JScrollPane qui contient un JPanel qui lui meme contient 3 JPanel, qui affichent une image chacun)
lors d'une action de zoom, j'ai besoin :
- de modifier la taille des images, et donc de tous les panels
- de me déplacer à un encroit (l'endroit où le zoom a été effectué)
seulement voilà... la première phase marche bien, la taille est bien changée à l'affichage, mais lorsque je demande au scrollpane de se déplacer, la taille des panels n'a pas encore changée, et donc le point n'existe pas encore... alors voilà la question. comment etre sur que toutes les informations de taille des panels ont été mise à jour avant de lancer le déplacement vers le point voulu ?
voilà ce que moi je fais (je sais c'est crade, mais dans ce genre de situation, les seuls résultats obtenus le sont en tatonnant)
1° calcul du ratio, ou niveau de zoom
2° modification du ratio dans les panels image (les 3 JPanel du bas). leur méthode getsize retourne la taille de l'image, transformée par le ratio.
3° tentative infructueuse de revalidation du tout, sans reconstruction du scrollpane
Code :
- ensImagePanel.revalidate();
- ensImagePanel.repaint();
- scrollPane.invalidate()
- scrollPane.revalidate();
|
4° demande de déplacement à un point donné du panel qui contient les 3 panel image
le défaut, c'est qu'à la sortie de la phase 3°, les informations de taille de ensImagePanel ne sont toujours pas à jour (comme si le ratio n'avait pas été changé) alors qu'à l'écran, le ratio est bien correct...
merci de votre aide...
j'espère ne pas avoir été trop incompréhensible