2010-11-11 11 views
10

He probado el siguiente código:Cómo recuperar imágenes en GWT?

RootPanel root = RootPanel.get("root"); 
root.clear(); 
final FlowPanel p = new FlowPanel(); 
root.add(p); 
for (int i=0; i<20; ++i) { 
    String url = "/thumb/"+i; 
    final Image img = new Image(url); 
    img.addLoadHandler(new LoadHandler() { 
     @Override 
     public void onLoad(LoadEvent event) { 
     p.add(img); 
    } 
}); 
Image.prefetch(url); 

Pero esto no funciona para mí. ¿Me perdí algo?

Respuesta

1

Lo que Stan dijo tiene sentido.

Creo que el problema es que no se llama al LoadHandler por algún motivo. Siempre lo he gestionado sin LoadHandler, pero generalmente agrego un errorHandler según la demo de JavaDoc que se activa si falla la carga. Esto debería funcionar:

final Image img = new Image(); 

img.addErrorHandler(new ErrorHandler() { 
     public void onError(ErrorEvent event) { 
     // Handle the error 
     } 
    }); 

img.setUrl(url); 
p.add(img); 

véase el ejemplo en el Javadoc GWT: manipulador de carga http://google-web-toolkit.googlecode.com/svn/javadoc/2.1/com/google/gwt/user/client/ui/Image.html

7

imagen se llama sólo en el caso, cuando la imagen se adjunta a la DOM. Así que hay que añadir una imagen a la DOM fuera del loadHandler:

p.add(img); 
img.addLoadHandler(new LoadHandler() { 
    @Override 
    public void onLoad(LoadEvent event) { 
     //do some stuff, image is loaded 
    } 
} 
+1

dreak es correcto, el código tiene un error de lógica y la img no se adjunta a la DOM. Compare su código con este fragmento – LoneWolf

1
ImageElement img = DOM.createImg().cast(); 
img.setSrc("images/myImage.png"); 
+0

¿Cómo debería ayudar esto? – confile

+0

es una forma más corta de lograr la captación previa – vinnyjames

+0

¿Pero cómo convierto el ImageElement en una imagen? – confile

Cuestiones relacionadas