2016-04-26 65 views
0

我有一个DataGrid创建。现在,我希望用户能够使用+和 - 符号单击按钮,以使数据网格中的文本更大或更小。GWT DataGrid更改行字体大小

我知道我可以这样做:

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

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

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

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

我试图

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

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

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

感谢您的任何帮助。

回答

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()); 
    } 
} 
+0

我使用GSS,所以语法有一点不同,但它看起来像我想要的。我做了@def FONT_SIZE eval(“package.function()”);我只是不知道如何“reeval”这一点。所以我想你的代码可以解决这个问题,但它似乎覆盖了我的样式(从引导程序),并完全混淆了我的用户界面,字体大小没有改变。只要我得到它的工作,我接受你的答案:) –

+0

好吧,我可以注入我的gss文件,我看到它的字体大小的变化。然而,原始样式的类名为:“.C2PGHCB-f-q td”,但注入的类名为“.C2PGHCB-a-qd”,因此它不会覆盖以前的样式,因为它具有不同的名称。 –

+0

ohh我再次检查了我的例子...您必须将使用'@eval FONT_SIZ'的css类添加到'@ external' ...创建类'.fontSIze'并将其添加到您的gridRows。所以只有这个'.fontSize'不会被混淆。我会编辑我的文章 – Tobika