2016-06-09 1 views
1

Так что я пытаюсь добавить изображения к моей сетке, используя IndexedContainer со следующим кодом:Vaadin: Изображения в сетке с IndexedContainer

//picture 
    String imgURL = (String)ds.child(PHOTO).getValue();//gets the image URL from the DB 
    System.out.println(imgURL); 
    ExternalResource picture = new ExternalResource(imgURL); 
    System.out.println(picture.getURL()); 
    Image image = new Image(PICTURE, picture); 
    image.setHeight("5px"); 
    item.getItemProperty(PICTURE).setValue(image); 

Вместо того, чтобы получать картину, я получаю toString() из Объект изображения. И println напечатайте правильный URL. Также обратите внимание, что это работает с таблицей, но не с сеткой. Любая идея почему?

+0

Какой println напечатал правильный URL? Какое значение имеет ИЗОБРАЖЕНИЕ? – KJaeg

+0

Оба сделали. Это то, что показано в ячейке сетки: [email protected] – jonesjames

+0

@KJaeg Both. – jonesjames

ответ

1

Если вы хотите отобразить изображение в колонке Vaadin Grid, вам необходимо установить ImageRenderer, см. here пункт ImageRenderer.

Пример: Определить вашу колонку, как

grid.addColumn("picture", Resource.class).setRenderer(new ImageRenderer()); 

затем добавить ресурс в качестве значения столбца

grid.addRow(new ThemeResource("img/copernicus-128px.jpg"), "Nicolaus Copernicus", 1543); 

В вашем случае это ExternalResource. Нет необходимости в компоненте Image.

+0

Увы, я использую IndexedContainer, поэтому это действительно не применимо. – jonesjames

+0

Ну, это был просто пример. Для вашего «IndexedContainer» нужен столбец со значениями типа «Ресурс», например. 'ThemeResource', а затем установите средство визуализации как' grid.getColumn ("yourColumn"). SetRenderer (new ImageRenderer()) '. –

+0

Я сделал все это. Как я уже сказал, для таблицы работает тот же код. Я перешел и решил пойти с таблицей. Возможно, проблема заключалась в том, что я объявил столбец как имеющий тип «Image» вместо «Resource». – jonesjames

 Смежные вопросы

  • Нет связанных вопросов^_^