如何将图像添加到GWT中cellTable中的单元格

she*_*rry 5 image gwt-2.2-celltable

我想在CellTable的单元格中添加图像.阅读文档后,这就是我所做的,

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

好吧,现在桌子上有一个空列,里面没有图像.我在这里做错了吗?任何建议表示赞赏.谢谢.

Ion*_*tan 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();
    }
  };
Run Code Online (Sandbox Code Playgroud)

  • 同意!ImageResourceCell将有助于在celltable中实现Image.但是,这看起来更像是静态而非动态的实现.这会强制用户将每个图像与界面中的方法(参考资料)相关联.但是,在大多数情况下,图像的位置是动态获得的.例如,我有一个1000images的项目,并希望将它们填充到一个celltable中.我不能创建1000个方法,每个方法对应一个图像.这是一个通用的解决方案吗? (2认同)
  • @Ashok,你总是可以创建自己的类来实现`ImageResource`,然后使用该类的实例来填充单元格.像这样:https://gist.github.com/1124648 (2认同)

小智 9

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, "");
Run Code Online (Sandbox Code Playgroud)


小智 5

我想在IonuţG.Stan的帖子里有一个错误

我想是的

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

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