我想在gwt中获取ui对象的偏移宽度。但这个值取决于:
- ui对象是否附着在哪里
- 在哪里加载了相对css
- uiobject的大小可以在onload回调中修改
因此,事情会变得复杂,尤其是当您想要获得FlowPanel、Label、InlineLabel等的值时。。该大小是动态计算的。
我的问题是:什么时候或者如何正确地获得越位宽度?
只有在页面完全呈现后,才能获得正确的大小。否则,您将获得零值。通常有两种用例:
(A) 告诉浏览器渲染您的视图。然后使用Scheduler确保浏览器已完成渲染,然后再检查大小:
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
int width = myPanel.getOffsetWidth();
// do something with this width
]
]
(B) 将调整大小处理程序附加到窗口。如果用户更改浏览器的窗口大小,则所有宽度和高度都可能更改。您不需要在ResizeHandler中使用Scheduler-浏览器将在调用ResizeHandler之前完成页面的重新呈现。