GWT:如何将包含CellTable的元素居中?

时间:2011-08-24 10:46:59

标签: gwt gwt-2.2-celltable

我正在尝试将包含CellTable的元素居中。实际上 定心逻辑工作正常,但我遇到了所有这些问题 附加/分离事件。基本上,我在我的容器中这样做 插件:

@Override
public void onLoad() {
  super.onLoad();
  center();
}

然而,似乎容器上的onLoad并不意味着全部 孩子们已经加载了,所以......实际的中心例程也被调用了 早期Element.getOffsetWidth / getOffsetHeight都返回0。 这导致容器显示左上角 在屏幕的中央。

如果我在AttachEvent.Handler上使用CellTable,也会发生同样的事情。

所以... CellTableWidget或其他任何事件都有 允许我在附加DOM子树时触发操作 DOM?

提前致谢。

2 个答案:

答案 0 :(得分:2)

看看scheduleDeferred。在浏览器事件循环返回后执行延迟命令。

Scheduler.get().scheduleDeferred(new ScheduledCommand() {
    @Override
    public void execute() {
        center();
    }
});

答案 1 :(得分:1)

覆盖onAttach而不是onLoadonAttach默认实现调用onLoad后跟doAttachChildren(在每个子窗口小部件上调用onAttach),因此以下代码应在孩子出现后调用center附:

@Override
public void onAttach() {
  super.onAttach();
  center();
}

(顺便说一下,onLoad的默认实现是无操作)