我需要在屏幕上渲染后获取窗口小部件的宽度,因为当我尝试在连接后获取宽度时,它返回零。我可以检索小部件的有效偏移宽度的最早时间是什么时候?
提前致谢!
答案 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");
}});
}