2013-05-14 70 views
1

我有陣列列表中的字體列表,我將此字體添加到單元格表(GWT)中,但完整列表僅顯示默認字體。但是我的要求是,如果字體名稱是「Arial」,那麼該名稱應該以「Arial」字體顯示,並且如果字體名稱是「Calibri」,那麼該名稱應該以「Calibri」字體顯示,就像其餘的字體一樣。如何顯示「組合框」中的「單元格表」中的字體列表。GWT:如何更改GWT Celltable中的行字體?

+0

我也遇到過類似的問題,我已經使用圖像。等待更好的解決方案 – SenthilPrabhu 2013-05-14 05:03:42

回答

0

GWT中的單元格可以具有自定義渲染器。請參閱此示例的細節 - 我試圖保持它儘可能簡單:

public class Sample implements EntryPoint { 

    private static final Templates T = GWT.create(Templates.class); 

    public interface Templates extends SafeHtmlTemplates { 
     @Template("<span style='{0}'>{1}</span>") 
     SafeHtml fontName(SafeStyles styles, String name); 
    } 

    static class Font { 
     String name; 
     public Font(String name) { 
      this.name = name; 
     } 
    } 

    class FontCell extends AbstractCell<Font> implements Cell<Font> { 
     @Override 
     public void render(Context context, Font font, SafeHtmlBuilder sb) { 
      sb.append(T.fontName(SafeStylesUtils.fromTrustedNameAndValue("font-family", font.name), font.name)); 
     } 
    } 

    class FontColumn extends Column<Font, Font> { 
     public FontColumn() { 
      super(new FontCell()); 
     } 

     @Override 
     public Font getValue(Font object) { 
      return object; 
     } 
    } 

    private static List<Font> fonts = Arrays.asList(
      new Font("Arial"), 
      new Font("Courier New"), 
      new Font("Tahoma"), 
      new Font("Verdana")); 

    public void onModuleLoad() { 
     CellTable<Font> cellTable = new CellTable<Font>(); 
     cellTable.addColumn(new FontColumn(), "Font"); 
     new ListDataProvider<Font>(fonts).addDataDisplay(cellTable); 
     RootPanel.get().add(cellTable); 
    } 
}