Ciò che funziona in modo affidabile è l'ascoltatore a livello di finestra di ridimensionamento:
Window.addResizeHandler(new WindowResizeHandler())
vostro gestore di ridimensionamento verrà chiamato quando l'utente ridimensiona la finestra del browser:
public void onResize(ResizeEvent event)
È possibile utilizzare event.getHeight()
e event.getWidth()
a ottieni le dimensioni della finestra aggiornate.
Poiché si ottiene l'evento solo per la finestra nel suo complesso, è necessario eseguire la propagazione dei componenti che si desidera disporre. Di solito chiamo solo un metodo doLayout()
. Questo metodo non ha nemmeno bisogno dell'altezza e della larghezza dell'evento di ridimensionamento perché, come già commentato da DLH, puoi chiedere la maggior parte dei componenti per le loro dimensioni quando ricevi una notifica e fai i tuoi calcoli con quello.
Sfortunatamente, alcuni browser non fanno la cosa onResize molto spesso. Nel tentativo di non impazzire con gli aggiornamenti, a volte possono rimanere aggrappati all'evento per alcuni secondi, lasciando la tua applicazione visibilmente brutta in attesa di un layout "corretto". Quindi, dove possibile, dovresti provare a lasciare il layout al CSS e, probabilmente, a seconda della tua posizione nelle tabelle "tabelle contro CSS".
fonte
2009-10-03 12:47:46
In definitiva, voglio ridimensionare il browser in base alle modifiche apportate a VerticalPanel (una sorta di funzione di ridimensionamento automatico che è necessario implementare). Queste modifiche sono principalmente determinate dal ridimensionamento dei widget contenuti in VerticalPanel. Ad esempio, ho un widget TreeGrid con righe comprimibili. Se l'utente espande/comprime una riga, modifica l'altezza del contenitore. Immagino di poter seguire il tuo consiglio ed estendere VerticalPanel per ascoltare le modifiche sui widget che vengono aggiunti. Ma il problema è che non esiste alcuna funzione per ottenere l'altezza del pannello in pixel (almeno a mia conoscenza). – P4ndaman
Basta chiamare getOffsetHeight() dalla classe UIObject per ottenere l'altezza in pixel. – DLH
Heh l'ha appena scoperto, grazie comunque. – P4ndaman