GWT Относительная Ширина - PullRequest
1 голос
/ 25 августа 2009

Я пытаюсь создать панель прокрутки с параметрами относительного размера. Но с функцией ScrollPanel.setSize(String, String) невозможно работать, если у вас есть значения типа int, например, возвращаемые Window.getHeight.

Когда я пытаюсь ScrollPanel.setSize("100%", "150px");, он не меняет высоту панели прокрутки и вместо этого использует значение по умолчанию. Любая помощь будет оценена.

Ответы [ 3 ]

2 голосов
/ 28 августа 2009

Согласно документу GWT для [ScrollPanel] [1], они, похоже, довольно строги в отношении использования ширины в абсолютных , а не относительно CSS-единиц. Таким образом, проблема может быть связана с параметром «100%».

[1]: http://google -web-toolkit.googlecode.com / svn / javadoc / 1.5 / com / google / gwt / пользователь / client / ui / ScrollPanel.html # setSize (java.lang. Строка , java.lang.String)

0 голосов
/ 15 декабря 2016

Копирование моего ответа отсюда: Как использовать 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);
0 голосов
/ 07 августа 2014

Я не уверен, возможно ли это сделать с высотой, но для меня работало с шириной: сначала установить произвольную ширину, затем получить элемент и установить свойство ширины.

ScrollPanel myScrollPanel = new ScrollPanel();
myScrollPanel.setSize("2112px", "150px");   // Arbitrary width.
myScrollPanel.getElement().getStyle().setProperty("width", "100%");  // or "auto"

Надеюсь, это сработает для вас (хотя вы спрашивали об этом 5 лет назад, так что вы, вероятно, больше не беспокоитесь об этом)!

...