我创建了一个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);
但没有成功。也许我必须针对儿童元素?
感谢您的帮助。
答案 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());
}
}