Похоже, вы должны указать абсолютные размеры всех, кроме одной подпанели. Например, из GWT документов :
DockLayoutPanel p = new DockLayoutPanel(Unit.EM);
p.addNorth(new HTML("header"), 2);
p.addSouth(new HTML("footer"), 2);
p.addWest(new HTML("navigation"), 10);
p.add(new HTML(content));
Но я хочу, чтобы размер северной панели определялся браузером. Я поместил в него текст или кнопки, и я точно не знаю, какой это будет размер, я просто знаю, что он относительно тонкий и находится вверху страницы. И я хочу, чтобы контент занимал все остальное пространство, но не более, поэтому в браузере нет полос прокрутки. Есть ли способ справиться с этим с помощью этих новых панелей макета?
Прямо сейчас я использую старые панели, и к мне прикреплен обработчик с Window.addResizeHandler
, который устанавливает высоту основной области содержимого так, чтобы все вписывалось в Window.getClientHeight
Обновление:
Томас предложил DockLayoutPanel
внутри HeaderPanel
, но это не работает для меня:
<g:HeaderPanel>
<g:Label>Header top</g:Label>
<g:DockLayoutPanel unit='PX'>
<g:west size='300'>
<g:Label>West</g:Label>
</g:west>
<g:center>
<g:Label>Center</g:Label>
</g:center>
</g:DockLayoutPanel>
</g:HeaderPanel>
"Верхний колонтитул" там, остальные невидимы. Похоже, что внутренние div получают 0 высоту.