Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Vaadin中设置视图中网格/表格中的单元格背景色?_Java_Gridview_Grid_Vaadin - Fatal编程技术网

Java 如何在Vaadin中设置视图中网格/表格中的单元格背景色?

Java 如何在Vaadin中设置视图中网格/表格中的单元格背景色?,java,gridview,grid,vaadin,Java,Gridview,Grid,Vaadin,我使用的是Vaadin,我想将背景颜色设置为网格/表格中的特定单元格,或者如果无法将背景颜色设置为特定单元格,我想至少将字体颜色设置为网格/表格中的特定单元格。下面是我获得网格/表格的代码表视图: package com.trading.scraper; import com.vaadin.navigator.View; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.Grid; import com.vaadin.ui.V

我使用的是Vaadin,我想将背景颜色设置为网格/表格中的特定单元格,或者如果无法将背景颜色设置为特定单元格,我想至少将字体颜色设置为网格/表格中的特定单元格。下面是我获得网格/表格的代码表视图:

package com.trading.scraper;

import com.vaadin.navigator.View;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.Grid;
import com.vaadin.ui.VerticalLayout;

import java.util.Arrays;
import java.util.List;

class TableView extends CustomComponent implements View {

    static final String NAME = "Stock table";

    TableView() {
        final VerticalLayout layout = new VerticalLayout();

        List<Stock> people = Arrays.asList(
                new Stock("1", "2", "1"),
                new Stock("3", "5", "2"),
                new Stock("1", "3", "4"));

        Grid<Stock> grid = new Grid<>();
        grid.setWidth(100, Unit.PERCENTAGE);
        grid.setItems(people);
        grid.addColumn(Stock::getValue1).setCaption("Value1");
        grid.addColumn(Stock::getValue2).setCaption("Value2");
        grid.addColumn(Stock::getValue3).setCaption("Value3");

        layout.addComponents(grid);
        setCompositionRoot(layout);
    }
}

如果可以设置特定单元格的背景色或至少设置字体颜色,并且您知道如何操作,请写下。例如,如果网格/表格中的单元格值为“1”,我想将其变为红色,但如果单元格值为“5”,我想将其变为绿色,如果单元格值为“3”,我想将其变为黄色。非常感谢。

您有两个选项可以在Vaadin中设置
网格的内容样式

首先,要设置行的样式,可以执行以下操作:

grid.setStyleGenerator(stockRow -> 
  "1".equals(stockRow.getValue1()) ? "highlighted" : null);
如果条件适用,则突出显示的css类将添加到每个网格行中。然后,可以使用以下选择器在SCS中设置行的样式:

.v-grid-row.highlighted {
  color: red;
}
要选择单元格并设置其样式,您需要选择td:

.v-treegrid-row.highlighted > td {
  color: red;
}
我想您可能希望直接设置单元格的样式,以便更适合将样式生成器设置为每列模式,如以下示例所示:

grid
  .addColumn(Stock::getValue1)
  .setCaption("Value1")
  .setStyleGenerator(stockRow -> {
    switch (stockRow.getValue1()) {
      case "1": return "red";
      case "3": return "yellow";
      case "5": return "green";
      default: return null;
    }
  });
然后,可以在SCS中设置单元格样式:

.v-grid-cell.red {
  color: red;
}
.v-grid-cell.red {
  color: red;
}