gwt getOffsetWidth返回零

时间:2011-10-12 22:41:38

标签: gwt

我需要在屏幕上渲染后获取窗口小部件的宽度,因为当我尝试在连接后获取宽度时,它返回零。我可以检索小部件的有效偏移宽度的最早时间是什么时候?

提前致谢!

3 个答案:

答案 0 :(得分:5)

仅在浏览器构建了页面内容后才知道框的偏移宽度。使用scheduleDefferred(),然后您就可以获得该值。

示例:

final TextBox yourInput = new TextBox();
Scheduler.get().scheduleDeferred(new ScheduledCommand() {

  @Override
  public void execute() {
    int width = yourInput.getOffsetWidth();
    /* Do anything with width */
  }
});

答案 1 :(得分:1)

看一下Widget的onLoad()方法。这是一个无法操作的方法,可以在窗口小部件附加到浏览器文档后立即调用。

答案 2 :(得分:1)

尝试onLoad()和scheduleFinally()的组合。

在下面的代码中,“onResize”和“scheduleFinally”回调将始终有良好的结果。在他们两个之间,你应该抓住所有必需的事件。

“onLoad”通常会返回0作为大小,如原始问题中所述。你可以跳过那一部分。

    @Override
    public void onResize() {
        recordSize("onResize");     
    }
    @Override
    public void onLoad() {
        super.onLoad();
        recordSize("onLoad");   
        Scheduler.get().scheduleFinally(new Scheduler.ScheduledCommand()
        {
            @Override
            public void execute() {
                recordSize("scheduleFinally");
            }});
    }