1

我想在 gwt 中获取 uiobject 的 offsetwidth。但这个值取决于:

  1. uiobject 附在哪里?
  2. 相对css在哪里加载?
  3. uiobject 的大小可以在 onload 回调中修改。
  4. ...

所以,事情变得复杂了,特别是当你想获得 FlowPanel、Label、InlineLabel 等的这个值时。它的大小是动态计算的。

我的问题:何时或如何正确获得 offsetwidth?

4

1 回答 1

3

只有在页面完全呈现后,您才能获得正确的大小。否则,您将获得零值。通常,有两个用例:

(A) 告诉浏览器渲染你的视图。然后使用调度程序确保浏览器已完成渲染,然后再检查大小:

Scheduler.get().scheduleDeferred(new ScheduledCommand() {
    @Override
    public void execute() {
        int width = myPanel.getOffsetWidth();
        // do something with this width
    ]
]

(B) 将调整大小处理程序附加到窗口。如果用户改变浏览器的窗口大小,所有的宽度和高度都可能改变。您不需要在 ResizeHandler 中使用调度程序 - 浏览器将在调用 ResizeHandler 之前完成重新呈现页面。

于 2012-09-11T14:14:42.040 回答