2011-05-05 161 views
4

我想在CellTable的单元格中添加图像。阅读文档后,这是我做的,如何将图像添加到GWT中cellTable中的单元格

Column<Contact, String> imageColumn = new Column<Contact, String>(new ImageCell()) { 
    @Override 
    public String getValue(Contact object) { 
     return "contact.jpg"; 
    } 
    }; 
table.addColumn(imageColumn, ""); 

嗯,有在表中现在一个空列,并在其中没有图像。我在这里做错了什么?任何建议表示赞赏。谢谢。

+0

我看不到这个问题。你得到一个完全空白的图像丢失图标? – 2011-05-25 15:22:00

+0

你在哪里有文件“contact.jpg”?它应该直接置于/战争之下。否则它将无法工作。 – Ashok 2011-08-04 03:15:18

回答

16

使用ImageResourceCell

interface Resources extends ClientBundle { 
    @Source("image-path.png") 
    ImageResource getImageResource(); 
} 

Resources resources = GWT.create(Resources.class); 

Column<Contact, ImageResource> imageColumn = 
    new Column<Contact, ImageResource>(new ImageResourceCell()) { 
    @Override 
    public ImageResource getValue(Contact object) { 
     return resources.getImageResource(); 
    } 
    }; 
+2

同意! ImageResourceCell将有助于在celltable中实现Image。但是,这看起来更像是一个静态而非动态的实现。这会强制用户将每个图像与界面中的方法(资源)相关联。但是,在大多数情况下,图像的位置是动态获取的。例如,我有一个1000images的项目,并希望将它们填充到celltable中。我无法创建每个对应于图像的1000个方法。有没有一个通用的解决方案呢? – Ashok 2011-08-04 02:39:09

+2

@Ashok,你总是可以创建自己的实现ImageResource的类,然后使用该类的实例来填充单元格。像这样的:https://gist.github.com/1124648 – 2011-08-04 07:14:44

+0

嘿家伙, 这种类型有一个问题:“我们不能缩放图像”。有不同的解决方案: 1.预映像加载程序 2. FITImage 等,但一个简单的解决方案(http://markmail.org/message/qe7j6tgrl34nrqib#query:+page:1+mid:yfv4paerhvix2qek+状态:结果)提供了更好的作品。它很简单:使用htmlcell而不是imagecell,并为该htmlcell分配图像链接。它按照给定的宽度和高度完美地缩放。想到与大家分享一切。 – Ashok 2011-08-10 00:08:25

5

我想有一个在约努茨G.斯坦一个错误后

我想是

Column<Contact, ImageResource> imageColumn = 
    new Column<Contact, ImageResource>(new ImageResourceCell()) { 
    @Override 
    public ImageResource getValue(Contact object) { 
     resources.getImageResource(); 
    } 
    }; 

所以用公共ImageResource的getValue而不是public String getValue

+1

不要忘记getValue方法中的“return”关键字 – OutOfBound 2013-12-11 16:07:50

8
Column<Contact, String> imageColumn = 
    new Column<Contact, String>(
     new ClickableTextCell() 
     { 
      public void render(Context context, 
           SafeHtml value, 
           SafeHtmlBuilder sb) 
      { 
       sb.appendHtmlConstant("<img width=\"20\" src=\"images/" 
             + value.asString() + "\">"); 
      } 
     }) 
     { 
      @Override 
      public String getValue(Contact object) { 
       return "contact.jpg"; 
      } 
     }; 
     table.addColumn(imageColumn, ""); 
相关问题