我正在尝试将包含CellTable
的元素居中。实际上
定心逻辑工作正常,但我遇到了所有这些问题
附加/分离事件。基本上,我在我的容器中这样做
插件:
@Override
public void onLoad() {
super.onLoad();
center();
}
然而,似乎容器上的onLoad
并不意味着全部
孩子们已经加载了,所以......实际的中心例程也被调用了
早期Element.getOffsetWidth
/ getOffsetHeight
都返回0
。
这导致容器显示左上角
在屏幕的中央。
如果我在AttachEvent.Handler
上使用CellTable
,也会发生同样的事情。
所以... CellTable
或Widget
或其他任何事件都有
允许我在附加DOM子树时触发操作
DOM?
提前致谢。
答案 0 :(得分:2)
看看scheduleDeferred。在浏览器事件循环返回后执行延迟命令。
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
center();
}
});
答案 1 :(得分:1)
覆盖onAttach
而不是onLoad
。 onAttach
默认实现调用onLoad
后跟doAttachChildren
(在每个子窗口小部件上调用onAttach
),因此以下代码应在孩子出现后调用center
附:
@Override
public void onAttach() {
super.onAttach();
center();
}
(顺便说一下,onLoad
的默认实现是无操作)