GWT DataGrid更改行字体大小

时间:2016-04-26 10:15:12

标签: css gwt datagrid font-size

我创建了一个DataGrid。现在我希望用户能够点击带有+和 - 符号的按钮,使数据网格中的文本更大或更小。

我知道我可以这样做:

DataGrid table = new DataGrid<Row>();
table.setRowStyles(new RowStyles<LogRow>() {
    @Override
    public String getStyleNames(LogRow row, int rowIndex) {
      return className;
    }
});

但我想动态更改字体。我的意思是“当前字体大小+ 1”或“当前字体大小 - 1”。

有办法吗?或者我是否必须为每个字体大小创建特殊类?

我尝试在GSS中定义一个常量,它从我的类的“getFontSize()”方法获取它的值,但它是一个CONSTANT,所以它只获取该值一次,然后忽略对fontSize属性的任何更改我的班级。

我试过

table.getElement().getStyle().setFontSize(newFontSize, Style.Unit.PX);

table.getRowContainer().getStyle().setFontSize(newFontSize, Style.Unit.PX);

但没有成功。也许我必须针对儿童元素?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在样式表中使用@eval。也许这个片段可以帮助你

//refer to a method, that returns a string for your front size.
//your can change the return value of getFontSize() at any time
@eval FONT_SIZE com.your.app.client.css.getFontSize();
@external .fontSize;
.fontSize{
    font-size: FONT_SIZE;
}

然后注入您的样式,并在您想要更改字体大小时替换它:

public class Css {
    public static String FONT_SIZE= "18px";

    public static String getFontSize() {
         return FONT_SIZE;
    }

    public Css(){
        CssResource res = GWT.create(YourRes.class);
        StyleElement styleElement = StyleInjector.injectStylesheet(res.getText());
        FONT_SIZE = "25px";
        StyleInjector.setContents(styleElement , res.getText());
    }
}