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