2011-05-05 160 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, ""); 
相關問題