SmartGwt在添加成员后获取VLayout高度

SmartGwt在添加成员后获取VLayout高度,gwt,smartgwt,Gwt,Smartgwt,添加成员后,我无法获取VLayout高度 VLayot layout = new VLayout(); 在presenter中我有代码 display.getAnswerPanel().removeMembers(display.getAnswerPanel().getMembers()); 它清除所有成员,然后添加另一个成员(我有按钮,当我点击它们时,它清除所有VLayout并添加新成员) 我需要在开始时获得offsetHeight这个VLayout,每次我点击按钮,我的问题是第一次加载页

添加成员后,我无法获取
VLayout
高度

VLayot layout = new VLayout();
在presenter中我有代码

display.getAnswerPanel().removeMembers(display.getAnswerPanel().getMembers());
它清除所有成员,然后添加另一个成员(我有按钮,当我点击它们时,它清除所有
VLayout
并添加新成员)

我需要在开始时获得
offsetHeight
这个
VLayout
,每次我点击按钮,我的问题是第一次加载页面时,我的“offsetHeight”是1px,下次我点击按钮时,它都会显示正确的值。有人能帮我吗

我试着使用这个代码

scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
    layout.getOffsetHeight();
}

但情况是一样的,第一次我没有正确的值。

我们只能在加载小部件或单击按钮后才能获得任何小部件的高度和宽度。

调度器#schedulederferred()在GWT循环结束时执行,因此布局也没有时间更新。我想除了使用传统的计时器破解之外,你没什么可以做的(如果读者有疑问,是的,我指的是使用setTimeout()或Scheduler.get().scheduleWithFixedDelay(cmd,200)).

在尝试评估布局的尺寸之前,请确保已绘制布局。如何确保已绘制布局?在尝试获取布局的高度/宽度之前,请确保调用layout.show()。我调用了layout.show(),但它没有效果。当我刷新浏览器时,有时我的身高很高,有时不高。我不知道这取决于什么。可能是
scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
    layout.getOffsetHeight();
}