它是如何工作的-gwt中的image.setUrl?
carImageView中的图像是动态加载的,从db接收到一个url为picture的响应,然后称为setUrlurl 下一步:我想做一些依赖于当前图像的操作方法foo。因此,我可以处理事件onLoad并将我的方法foo放在这个处理程序中。但如果新加载的图像与上一个图像相同,则不会发生此事件。为什么 问题的核心——如果我将方法foo放在调用image.setUrlurl的后面,是否可能该图像还没有加载,也没有在carImageView中呈现,但方法foo已经完成了?我怎样才能避免这些事情 为我的英语学习它是如何工作的-gwt中的image.setUrl?,gwt,Gwt,carImageView中的图像是动态加载的,从db接收到一个url为picture的响应,然后称为setUrlurl 下一步:我想做一些依赖于当前图像的操作方法foo。因此,我可以处理事件onLoad并将我的方法foo放在这个处理程序中。但如果新加载的图像与上一个图像相同,则不会发生此事件。为什么 问题的核心——如果我将方法foo放在调用image.setUrlurl的后面,是否可能该图像还没有加载,也没有在carImageView中呈现,但方法foo已经完成了?我怎样才能避免这些事情 为我的
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url));
showLoadingPanel();
try {
builder.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
final int code = response.getStatusCode();
final String text = response.getText();
if (code == 200) {
if (response.getHeader("Content-Type").contains("text/html") &&
text.contains("<meta name=\"login\"/>")) {
Window.Location.reload();
return;
}
String img = "data:image/jpeg;base64," + text;
cameraImage.setUrl(img);
foo();
hideLoadingPanel();
} else {
showImageNotFoundError();
hideLoadingPanel();
}
}
@Override
public void onError(Request request, Throwable e) {
eventBus.fireEvent(new ServerRequestFailureEvent(e, this.getClass()));
hideLoadingPanel();
}
});
} catch (RequestException e) {
eventBus.fireEvent(new ServerRequestFailureEvent(e, this.getClass()));
hideLoadingPanel();
}
可能只需使用以下方式推迟对foo的呼叫: cameraImage.setUrlimg; Scheduler.get.scheduleDeferrednew ScheduledCommand{ @凌驾 公开无效执行{ 傅; } };
我以前也遇到过类似的问题,项目帮我解决了 要解决您的问题:
FitImage image = new FitImage();
image.addFitImageLoadHandler(new FitImageLoadHander() {
public void imageLoaded(FitImageLoadEvent event) {
if (!event.isLoadFailed()) {
foo();
}
}
});
image.setUrl("data:image/jpeg;base64," + text;);
现在,只有在加载映像后才会运行foo。看看这个项目,像ImagePreload这样的东西会派上用场的 我将调用cameraImage.setUrl放在showLoadingPanel之后。现在我可以处理onLoad事件,即使新图像与上一个图像相同。
这对我很有帮助,我认为这比其他人更容易做出决定,也许更好。你能提供一些代码吗?好的,补充一个问题,你是否使用IE,你的尺寸是否大于32K?