这些让我很困惑。 我有一个复合小部件包装一个带有以下加载处理程序集的Image;
ONLOADHANDLE = SceneObjectIcon.imageContents.addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
Scheduler.get().scheduleDeferred(new ScheduledCommand(){
@Override
public void execute() {
ObjectsLog("Size ="+getObjectWidth()+","+getObjectHeight(),"green"); //0,0
ObjectsLog("is Attached ="+SceneObjectIcon.isAttached(),"green"); //true
ObjectsLog("is Attached ="+SceneObjectIcon.imageContents.isAttached(),"green"); //true
ObjectsLog("offset ="+SceneObjectIcon.imageContents.getOffsetWidth()+","+SceneObjectIcon.imageContents.getOffsetHeight(),"green"); //0,0
ObjectsLog("image itself ="+SceneObjectIcon.imageContents.getWidth() +","+SceneObjectIcon.imageContents.getHeight(), "green"); // works
//remove handler so this wont fire on subsequent loads
ONLOADHANDLE.removeHandler();
//run other stuff
imageloaded();
}
});
}
});
注释;
SceneObjectIcon是一个扩展Composite的类。它包装了一个名为“imageContents”的Image对象,即只是;
initWidget(imageContents);
该类包含主要用于图像动画的功能。但是,这里没有使用。
ObjectsLog只是一个为我处理日志记录的类。考虑它就像Log.info等。
- 正如您所看到的,代码设置了一个延迟命令onLoad,后者又记录了刚刚加载的Image的大小。
然而,日志返回的“偏移”大小始终为0,0 - 尽管事实上两个“已附加”语句都返回true,并且仅在等待加载和浏览器之后触发。 但是,上一个日志语句中的图像大小正确地被拾取。
任何想法我可能做错了什么?
除了scheduleDeferred,我还尝试了scheduleFinnally和scheduleEntry,结果相同。
getOffsetWidth()应该何时可用,以及我尝试过的其他因素可能会影响无法得到结果?
我正在使用GWT 2.7,运行本地服务器进行测试,如果这有所不同。