Java Vaadin : CSV to Grid

标签 java vaadin vaadin8

我有一个 CSV 文件,我想在 Vaadin 的网格中显示它。 该文件如下所示:

CTI.csv

Facebook
Twitter
Instagram
Wiki

到目前为止,我尝试使用 while 循环和 for 循环。 for 循环如下所示:

Scanner sc = null;
    try {
        sc = new Scanner(new File("C:/development/code/HelloWorld/src/CTI.csv"));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
List<CTITools> tools = null;
for (Iterator<String> s = sc; s.hasNext(); ) {
    tools = Arrays.asList(new CTITools(s.next()));
}

Grid<CTITools> grid = new Grid<>();
grid.setItems(tools);
grid.addColumn(CTITools::getTool).setCaption("Tool");
layout.addComponents(grid);

setContent(layout);

现在的问题是它只显示最后一个条目“Wiki”。如果我像下面这样对数据进行硬编码,它就会起作用:

List<CTITools> tools;
tools = Arrays.asList(
            new CTITools("DFC"),
            new CTITools("AgentInfo"),
            new CTITools("Customer"));
            new CTITools("Wiki"));

Grid<CTITools> grid = new Grid<>();
grid.setItems(tools);
grid.addColumn(CTITools::getTool).setCaption("Tool");

那我做错了什么?为什么循环不起作用?

最佳答案

tools = Arrays.asList(new CTITools(s.next())); 在每次迭代时创建新列表。如果您希望将项目存储在一个列表中,则需要创建一次。然后使用 tools.add(new CTITools(s.next())) 将项目添加到循环中的同一列表中。

关于Java Vaadin : CSV to Grid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52112089/

相关文章:

java - 为什么使用 Navigator 和 SpringViewProvider 时页面会加载两次?

java - Vaadin Leaflet map 图层图标删除

Vaadin 10 用于新项目

JAVA - LString Java,链接字符串

java - onStartCommand 未与 startService 一起调用

java - Vaadin 如何将数据库中的数据添加到表中?

Vaadin Grid 鼠标中键单击

java - Spring App + Tomcat + XSLT = TransformerFactoryConfigurationError

java - 使用 Java 的 OOP : avoiding to duplicate code

java - 获取列以拉伸(stretch)表格的整个宽度