Ce qui fonctionne de manière fiable le Redimensionner niveau de la fenêtre d'écoute:
Window.addResizeHandler(new WindowResizeHandler())
Votre gestionnaire de modification de taille est appelée lorsque l'utilisateur redimensionne la fenêtre du navigateur:
public void onResize(ResizeEvent event)
Vous pouvez utiliser event.getHeight()
et event.getWidth()
à obtenir les dimensions de la fenêtre mise à jour.
Comme vous ne recevez que l'événement pour la totalité de la fenêtre, vous devez effectuer votre propre propagation vers les composants que vous souhaitez mettre en page. D'habitude, j'appelle simplement une méthode doLayout()
. Cette méthode n'a même pas besoin de la hauteur et de la largeur de l'événement de redimensionnement car comme DLH le fait déjà, vous pouvez demander à la plupart des composants leurs dimensions lorsque vous êtes averti, et faire vos calculs avec cela.
Malheureusement, certains navigateurs ne font pas très souvent le truc onResize. En essayant de ne pas devenir fou avec les mises à jour, ils peuvent parfois s'accrocher à l'événement pendant quelques secondes, laissant votre application visiblement laide en attendant une mise en page «correcte». Ainsi, si possible, vous devriez essayer de laisser la mise en page CSS et éventuellement, en fonction de votre position dans la guerre "tables vs CSS", des tableaux.
En fin de compte, je souhaite dimensionner le navigateur en fonction des modifications apportées au VerticalPanel (une sorte de fonctionnalité de dimensionnement automatique que je dois implémenter). Ces modifications sont principalement dues au redimensionnement des widgets contenus dans VerticalPanel. Par exemple, j'ai un widget TreeGrid avec des lignes réductibles. Si l'utilisateur développe/réduit une ligne, cela modifie la hauteur du conteneur. Je suppose que je pourrais suivre votre conseil et étendre VerticalPanel pour écouter les changements sur les widgets qui sont ajoutés. Mais le problème est qu'il n'y a pas de fonction pour obtenir la hauteur du panneau en pixels (du moins à ma connaissance). – P4ndaman
Vous appelez simplement getOffsetHeight() de la classe UIObject pour obtenir la hauteur en pixels. – DLH
Heh vient de découvrir à ce sujet, merci cependant. – P4ndaman