1

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

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

但是,似乎onLoad在容器上并不意味着所有孩子都已加载,所以......实际的居中例程被调用得太早并且Element.getOffsetWidth/getOffsetHeight都在返回0。这导致容器的左上角显示在屏幕中央。

如果我AttachEvent.HandlerCellTable.

那么...当 DOM 子树已附加到 DOM 时,是否有任何事件 onCellTable或 on或任何允许我触发操作的事件?Widget

提前致谢。

4

2 回答 2

2

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

Scheduler.get().scheduleDeferred(new ScheduledCommand() {
    @Override
    public void execute() {
        center();
    }
});
于 2011-08-24T11:44:27.433 回答
1

覆盖onAttach而不是onLoad. 后跟onAttach默认实现调用(调用每个子小部件),因此应在附加子小部件后调用以下代码:onLoaddoAttachChildrenonAttachcenter

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

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

于 2011-08-24T11:14:03.560 回答