2013-05-14 4 views
1

J'ai une liste de polices dans Array List, j'ajoute ces polices dans la table de cellules (GWT), mais la liste complète affiche la police par défaut seulement. Mais mon exigence est si le nom de police est "Arial" ce nom devrait être affiché avec la police "Arial" et si le nom de police est "Calibri" ce nom devrait être affiché avec la police "Calibri", comme les polices restantes aussi. Comment puis-je afficher cette liste de polices dans "combo box" avec "table de cellule".GWT: comment changer la police de ligne dans GWT Celltable?

+0

J'ai aussi rencontré un problème similaire où j'ai utilisé des images. En attente d'une meilleure solution – SenthilPrabhu

Répondre

0

Les cellules de GWT peuvent avoir un moteur de rendu personnalisé. S'il vous plaît se référer à cet échantillon pour plus de détails - J'ai essayé de garder le plus simple possible:

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); 
    } 
}