所以我正在尝试使用带有以下代码的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);
我没有获得图片,而是获得了Image对象的toString()
。两个println
都会打印正确的网址。另请注意,这适用于Table,但不适用于Grid。知道为什么吗?
答案 0 :(得分: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
组件。