当前位置: 首页 > 知识库问答 >
问题:

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

卢鸿彩
2023-03-14

我正在使用Vaadin,我想为网格/表格中的特定单元格设置背景颜色,或者如果无法为特定单元格设置背景颜色,我想至少为网格/表格中的特定单元格设置字体颜色。我有网格/表格的代码TableView如下:

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);
    }
}

网格/表的内容类为:

package com.trading.scraper;

public class Stock {

    private String value1;
    private String value2;
    private String value3;

    public String getValue1() {
        return value1;
    }

    public void setValue1(String value1) {
        this.value1 = value1;
    }

    public String getValue2() {
        return value2;
    }

    public void setValue2(String value2) {
        this.value2 = value2;
    }

    public String getValue3() {
        return value3;
    }

    public void setValue3(String value3) {
        this.value3 = value3;
    }

    public Stock() {
    }

    Stock(String value1, String value2, String value3) {
        this.value1 = value1;
        this.value2 = value2;
        this.value3 = value3;
    }
}

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

共有1个答案

史昱
2023-03-14

在Vaadin中,有两个选项可以设置Grid内容的样式。

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

grid.setStyleGenerator(stockRow -> 
  "1".equals(stockRow.getValue1()) ? "highlighted" : null);

如果条件适用,突出显示的css将添加到每个网格行。然后,可以使用以下选择器在SCSS中设置行的样式:

.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;
    }
  });

然后可以在SCSS中设置单元格样式:

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

 类似资料:
  • 问题内容: 我正在使用Vaadin,我想为我的表格/表格中的特定单元格设置背景色,或者如果无法为特定表格中的单元格设置背景色,我想至少为表格/表格中的特定单元格设置字体颜色。我有一个表格/表格的代码TableView如下: 表格/表格的内容类为: 如果可以将背景颜色设置为特定的单元格,或者至少设置字体颜色,并且您知道该怎么做,请写信。例如,在表格/表格中单元格的值为“ 1”的情况下,我想将其设置为

  • 我如何在Vaadin 8或更高版本中绘制网格单元。由于Vaadin 8不再支持grid.setCellStyleGenerator,我不知道还能做什么。有什么建议吗?

  • 我是瓦丁开发公司的新人,我希望有人能帮助我。我刚刚用模型创建了一个网格表,一切都很好。但是现在,我想改变选定行的背景颜色。我想,我必须创造一个主题。我在瓦丁论坛上发现了这个:https://vaadin.com/forum/thread/17867059/how-to-set-selected-row-opacity-in-vaadin-grid 这是我已经做过的: 我用链接中的代码创建了一个ht

  • 有人知道如何更改ZK网格中单元格的背景色吗?在网上搜索了几个小时,找不到太多。静态单元格不是问题,但这是动态渲染的网格。 计划是将某些细胞涂成红色或黄色,因为我想突出显示特定的值。 我的Zul: 我的虚拟机:

  • 我在更改JavaFX8中表格单元格的背景色时遇到了问题。 用 setStyle(“-fx-Alignment:centre-right;-fx-background-color:#ffd9d9;”)

  • 我对java编程还是相当陌生的,很难理解一些概念,尤其是设置单元格值。(如果有人能用外行的话来解释这一点,那就太棒了!) 这是我的问题。。。 我有一个tableview,其中加载了一个来自derby数据库中数据表的。将数据添加到表中的for循环是我从在线查看中学到的,它对我来说确实有效。我想更进一步,所以这是我的挑战。。。 将有如下示例:第1行[toy,high等]第2行[box,Middle等]