Копирование моего ответа отсюда: Как использовать ScrollPanel с относительным размером
=============================================== ===================
Во-первых, ScrollPanel - это что-то, что не действует как другой виджет по причине, которую я не знаю почему. Невозможно установить относительный размер (50%), и если я придаю ему стиль, он где-то теряется и не может быть найден на странице.
Мое решение - использовать ResizeLayoutPanel. Андрей предложил использовать что-то ProvidesResize, но требует, чтобы цепочка предоставить / требовать изменения размера не нарушалась, что может быть очень сложно. Я обнаружил эту ResizeLayoutPanel «ProvidesResize для одного дочернего элемента, но не RequResize», которая является идеальным кандидатом для корневой панели моего композита. Затем я просто расширяю ScrollPanel для изменения своего размера в методе "onResize" всякий раз, когда он вызывается родительским ResizeLayoutPanel.
Все еще нет ответа на мой первый вопрос: по ScrollPanel вести себя так же, во-первых? Я пытался найти ответ в его исходном коде, но безуспешно (хотя я не тратил достаточно времени на изучение исходного кода).
public class My100PctScrollPanel extends ScrollPanel {
@Override
public void onResize() {
// Window.alert("on resize");
this.setWidth(this.getParent().getOffsetWidth()+"px");
this.setHeight(this.getParent().getOffsetHeight()+"px");
super.onResize();
}
}
........
compositeRoot = new ResizeLayoutPanel();
........
scrollPanel = new My100PctScrollPanel();
compositeRoot.clear();
compositeRoot.add(scrollPanel);