Как закодировать независимое от разрешения приложение GWT?

Я вижу, что лучший способ сделать разрешение приложения независимым — использовать правильные макеты, как описано здесь http://www.sencha.com/helpcenter/index.jsp?topic=/com.extjs.gxt.help/html/reference/layouts/fitlayout.html . Однако, как показано в примере, размер панели выходит далеко за пределы того, что мы видим в окне браузера, как показано ниже: см. справа и снизу

Код приведен ниже, IndexPage — это Composite, ширина/высота которого не заданы, и отображает компоненты, как показано ниже:

public class Gallery implements EntryPoint {
public void onModuleLoad() {

    Viewport v = new Viewport();
    v.setLayout(new FitLayout());

    v.add(new IndexPage(), new FitData(5));

    RootPanel.get().add(v);

    }
}

Как правильно подойти к этому вопросу?


person panzerschreck    schedule 28.07.2011    source источник


Ответы (2)


Сама ваша IndexPage слишком велика, чтобы соответствовать области просмотра. Так что же делать? Он может только переполняться/скрываться или прокручиваться. По умолчанию он переполняется, но вы можете использовать setScrollMode, чтобы изменить это.

Альтернативой является уменьшение размера IndexPage. Как? Обычно вам нужно добавить прокрутку где-нибудь внутри страницы (например, позволяя прокручивать левую и правую панели по отдельности). Нет никакого волшебного автоопределения, вам придется решить, где вы хотите разместить полосы прокрутки (или, может быть, разрешить переполнение содержимого), а затем вручную установить ScrollContainers. Затем вы можете задать этим элементам высоту 100% (может быть, снова с помощью FitLayout в родительском контейнере), чтобы заполнить любое пустое пространство.

person Chris Lercher    schedule 28.07.2011

Одно решение довольно просто... Вы можете обернуть ScrollPanel вне своего виджета:

public class Gallery implements EntryPoint {
public void onModuleLoad() {

Viewport v = new Viewport();
v.setLayout(new FitLayout());

ScrollPanel sp = new ScrollPanel();
sp.setHeight("100%");
sp.setWidget(new IndexPage());

v.add(sp, new FitData(5));

RootPanel.get().add(v);

}

Таким образом, вы получите полосы прокрутки.

person thomas    schedule 29.07.2011