如何增加Vaadin 11.0.0网格中的行高?

时间:2018-11-15 09:50:45

标签: java css vaadin vaadin-grid

我想在Vaadin 11的网格中实现自动换行。据我了解,您需要为此做两件事:

  1. 设置相应单元格的样式。
  2. 增加行高。

我使用以下代码进行了第一步:

productsGrid.addColumn(TemplateRenderer.of(                 “[[项目名称]]”)                 .withProperty(“ name”,Product :: getName))                 .setHeader(“ Name”);

现在我需要增加行高。

也许可以使用productsGrid.getElement().getStyle().set(...)来做到这一点,但是我不确定如何使用它。

如何增加Vaadin 11网格中的行的高度(即使行更高,以便在单元格中显示长文本)?

更新1:

我正在使用以下代码创建网格:

private Grid<Product> createProductsGrid() {
    final Grid<Product> productsGrid = new Grid<Product>();
    productsGrid.setItems(Arrays.asList(AltFondUtilities.INSTANCE));
    productsGrid.addColumn(TemplateRenderer.<Product>of(
                    "<div style='word-wrap: break-word;'>[[item.name]]</div>")
                    .withProperty("name", Product::getName))
                    .setHeader("Название");
    productsGrid.addColumn(Product::getInterestRatePercentPerAnnum)
                    .setHeader("Ставка");
    productsGrid.addColumn(Product::getProvider).setHeader("Организация");
    productsGrid.setHeightByRows(true);
    return productsGrid;
}

结果:即使name列的样式正确,自动换行也不起作用。

Screenshot

2 个答案:

答案 0 :(得分:1)

在Vaadin 11的Java Examples of Grid中,似乎可以通过使用setHeightByRows

Grid<Person> grid = new Grid<>();

// When using heightByRows, all items are fetched and
// Grid uses all the space needed to render everything.
grid.setHeightByRows(true);

答案 1 :(得分:0)

行高的设置取决于所使用的主题。如果用户界面使用LUMO主题,则可以通过以下技巧更改表格的行高。

        Grid<Object> grid = new Grid<>();        
        grid.getStyle().set("--lumo-line-height-xs", "0");
        grid.getStyle().set("--lumo-line-height-s", "0");
        grid.getStyle().set("--lumo-size-xs", "0");
        grid.getStyle().set("--lumo-size-s", "0");
        grid.getStyle().set("--lumo-space-xs", "0");
        grid.getStyle().set("--lumo-space-s", "0");
        grid.getStyle().set("margin-top", "20px");
        grid.getStyle().set("line-height", "20px");