首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Vaadin Flow 14中创建简单的HTML表

如何在Vaadin Flow 14中创建简单的HTML表
EN

Stack Overflow用户
提问于 2021-12-20 08:28:26
回答 2查看 531关注 0票数 1

我想在Vaadin中创建一个简单的HTML表,但是组件已经不存在了(以前是可用的com.vaadin.ui.Table)。该表用于显示网格中选择的项的详细属性(键值对)。

我可以使用什么Vaadin流组件来实现这一点?为什么首先在Vaadin Flow中删除了表?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-20 09:34:05

表实际上已经在Vaadin8中删除了。https://vaadin.com/blog/-/blogs/mission-rip-table-migrate-to-grid-intro

要在流中实现表,有几种选择。一个是使用元素API,另一个是为表创建组件。

对于元素API版本,它可能类似于:

代码语言:javascript
复制
Element table = new Element("table");
For(item : item rows to add) {
  Element tr = new Element("tr");
  table.appendChild(tr);
  For(int i = 0; i < dataColumns; i++) {
    Element td = new Element("td");
// could perhaps append a span with text context.
    td.setText(item text for column i);
    tr.appendChild(td);
  }
}

对于组件方法,基本情况可能是将这3个元素实现为如下所示:

代码语言:javascript
复制
@Tag("table")
public class Table extends Component implements HasComponents {

    public Row addRow() {
        Row row = new Row();
        add(row);
        return row;
    }

    public Row getRow(int row) {
        final Optional<Component> rowOptional = getElement().getChild(row)
                .getComponent();
        if(rowOptional.isPresent())
            return (Row) rowOptional.get();
        return null;
    }
}

@Tag("tr")
public class Row extends Component {
    public void add(Cell cell) {
        getElement().appendChild(cell.getElement());
    }
    public int getRow() {
        return getElement().getParent().indexOfChild(getElement());
    }
}

@Tag("td")
public class Cell extends Component {
    
    public int getCol() {
        return getElement().getParent().indexOfChild(getElement());
    }

    public int getRow() {
        return ((Row) getParent().get()).getRow();
    }

    public void setText(String text) {
        getElement().setText(text);
    }

}
票数 4
EN

Stack Overflow用户

发布于 2021-12-23 06:19:44

表组件可以有多个用例。在Vaadin的社区组件目录中有几个替代方案。

  • 表显示数据列表(类似于网格,但更轻量级)

https://vaadin.com/directory/component/beantable

  • 表作为布局组件,它支持行-span、col等,您可以单独填充每个单元格。

https://vaadin.com/directory/component/html-table

由于这些使用程序非常不同,所以不同的Java更适合它们,尽管它们生成的HTML DOM结构非常相似。这两个附加组件都没有尝试复制Vaadin 7 Table组件的API。

  • 还有一个食谱,在Cookbook中,如何在网格详细信息行的TemplateRenderer中生成表.

https://cookbook.vaadin.com/grid-details-table

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70419130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档