2

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

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

但 o/p 始终为 0px。

4

2 回答 2

1

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

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");
}

}

于 2013-05-06T06:48:47.987 回答
0

这取决于您在哪里调用此代码。加载后高度将可用,即您可以通过onLoad()方法获得高度

于 2013-02-14T10:51:41.863 回答