如何使用UiBinder在GWT中获取小部件高度

时间:2013-02-14 10:44:34

标签: gwt uibinder

我无法在代码中获得小部件的高度

docklayoutpanel.setHeight("1900px");
String height=Integer.toString(docklayoutpanel.getOffsetHeight());
String heightt=height+"px";
System.out.println(heightt);

但是o / p总是0px。

2 个答案:

答案 0 :(得分:1)

这个问题已经过时了,但我遇到了同样的问题,我花了很长时间才解决它。所以在这里帮助别人是我的解决方案。 我正在使用UIBinder构建我的视图,并在构造函数中添加了一个Scheduler。

public class MyWidgetImpl extends Composite implements MyWidget {

@UiTemplate("MyWidget.ui.xml")
interface MainViewUiBinder extends UiBinder<Widget, MyWidgetImpl> {
}

@UiField(provided = true)
InputPanel inputPanel;

@UiField(provided = true)
ResultPanel resultPanel;

public MyWidgetImpl() {
    inputPanel = ClientFactory.getInputPanel();
    resultPanel = ClientFactory.getResultPanel();

    MainViewUiBinder uiBinder = GWT.create(MainViewUiBinder.class);
    initWidget(uiBinder.createAndBindUi(this));

    Window.addResizeHandler(new ResizeHandler() {
        public void onResize(ResizeEvent event) {
            resize();
        }
    });


    Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
        public void execute() {
            resize();
        }
    });
}

private void resize() {
    if(Window.getClientHeight() > resultPanel.getCellTree().getAbsoluteTop())
        resultPanel.getScrollPanel().setHeight((Window.getClientHeight() - resultPanel.getCellTree().getAbsoluteTop()) + "px");
}

}

答案 1 :(得分:0)

这取决于您在何处调用此代码。加载后高度可用,即您可以使用onLoad()方法

获得高度