В чем отличие RootPanel от RootLayoutPanel

Рейтинг: 2Ответов: 1Опубликовано: 10.02.2011

Совсем недавно обнаружила, что в gwt есть два вида рута: RootPanel и RootLayoutPanel. И один и второй можно получить через статик метод get. Я так понял, что RootPanel - это самый верхний элемент моей страницы, а RootLayoutPanel - ее единственный child, и уже в RootLayoutPanel мы размещаем свои компоненты. Так ли это? И еще. Какую практическую пользу можно извлечь от каждого из рутов? Я использовал RootPanel только когда делал перемещение мышью (в этом случае если заменить RootPanel на RootLayoutPanel, ничего не изменится).

Ответы

▲ 3Принят

RootPanel - это элемент < body >. Он содержит в себе RootLayoutPanel, все диалоги, открытые в данный момент (PopupPanel, DialogBox, и т.д.), а также все элементы, которые добавлены напрямую через getter RootPanel (но это нежелательно).

RootLayoutPanel - это самый верхний элемент < div >, во всю страницу, т.е. имеет стиль

position: absolute; 
left: 0px; 
top: 0px; 
right: 0px; 
bottom: 0px;

По сути же это обыкновенная LayoutPanel. С тем лишь отличием, что RootLayoutPanel может быть только один (синглтон). То есть непосредственно на RootLayoutPanel можно позиционировать элементы. А также RootLayoutPanel используется для отслеживания изменения размеров. Для этого используется интерфейс RequiresResize. Совершается обход всех детей элемента и у всех, кто реализовал RequiresResize, вызываем onResize.