Как предварительно выбрать изображение в GWT? - PullRequest
10 голосов
/ 11 ноября 2010

Я попробовал следующий код:

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);

Но это не работает для меня. Я что-то пропустил?

Ответы [ 3 ]

7 голосов
/ 05 октября 2012

Обработчик загрузки изображения вызывается только в том случае, когда изображение подключено к DOM. Таким образом, вы должны добавить изображение в DOM вне loadHandler:

p.add(img);
img.addLoadHandler(new LoadHandler() {
    @Override
    public void onLoad(LoadEvent event) {
        //do some stuff, image is loaded
    }
}
1 голос
/ 07 июня 2013
ImageElement img = DOM.createImg().cast();
img.setSrc("images/myImage.png");
1 голос
/ 11 ноября 2010

То, что сказал Стэн, имеет смысл.

Думаю, проблема в том, что LoadHandler по какой-то причине не вызывается. Я всегда обходился без LoadHandler, но я обычно добавляю errorHandler в соответствии с демонстрацией JavaDoc, которая запускается в случае неудачной загрузки. Это должно работать:

final Image img = new Image();

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

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

См. Пример в GWT Javadoc: http://google -web-toolkit.googlecode.com / svn / javadoc / 2.1 / com / google / gwt / пользователь / клиент / пользовательский интерфейс / Image.html

...