GWT:如何更改GWT Celltable中的行字体?

时间:2013-05-14 04:50:20

标签: java eclipse gwt eclipse-rcp

我在Array List中有字体列表,我将这些字体添加到单元格表(GWT)中,但完整列表仅显示默认字体。但我的要求是,如果字体名称是“Arial”,那么名称应该用“Arial”字体显示,如果字体名称是“Calibri”,那么该名称应该用“Calibri”字体显示,就像剩下的字体一样。如何在“组合框”中使用“单元格表”显示该字体列表。

1 个答案:

答案 0 :(得分: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);
    }
}