更改网格中单元格的颜色(Vaadin)

更改网格中单元格的颜色(Vaadin),vaadin,Vaadin,我正在Grid中使用BeanItemContainer来显示我的数据。我需要根据单元格中的数据分别为每个单元格着色。瓦丁书中的“生成单元格样式”小节对此进行了解释: 使用setCellStyleGenerator()将CellStyleGenerator设置为网格。getStyle()方法获取一个CellReference,其中包含有关单元格的各种信息和对网格的引用,如果没有生成样式,则应返回样式名称或null 例如,要将样式名称添加到特定列,可以按如下方式匹配该列的特性ID: grid.set

我正在
Grid
中使用
BeanItemContainer
来显示我的数据。我需要根据单元格中的数据分别为每个单元格着色。

瓦丁书中的“生成单元格样式”小节对此进行了解释:

使用
setCellStyleGenerator()
CellStyleGenerator
设置为网格。
getStyle()
方法获取一个
CellReference
,其中包含有关单元格的各种信息和对网格的引用,如果没有生成样式,则应返回样式名称或
null

例如,要将样式名称添加到特定列,可以按如下方式匹配该列的特性ID:

grid.setCellStyleGenerator(cellRef -> // Java 8
    "born".equals(cellRef.getPropertyId())?
        "rightalign" : null);
.v-grid-cell.rightalign {
    text-align: right;
}
然后可以使用CSS规则设置单元格样式,如下所示:

grid.setCellStyleGenerator(cellRef -> // Java 8
    "born".equals(cellRef.getPropertyId())?
        "rightalign" : null);
.v-grid-cell.rightalign {
    text-align: right;
}

还有一种方式,100%动态,没有样式文件

grid.addColumn(TemplateRenderer.<MyObj> of("<div style$=\"background-color: [[item.color]];\">[[item.duration]]</div>")
  .withProperty("color", MyObj::getDurationColor)
  .withProperty("duration", MyObj::getDurationMin)).setHeader("Duration");

伟大的你能解释一下我需要在哪里声明CSS规则吗?最好的地方是主题。我用的是“valo”主题。我将您的css声明放在文件(路径)src/main/webapp/VAADIN/themes/valo/styles.scss中。请告诉我为什么css仍然不起作用?解决方案是创建自己的主题