何时是调用UIObject.getOffsetWidth的正确时间



我想在gwt中获取ui对象的偏移宽度。但这个值取决于:

  1. ui对象是否附着在哪里
  2. 在哪里加载了相对css
  3. 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之前完成页面的重新呈现。

相关内容

  • 没有找到相关文章

最新更新