java - Java Vaadin:CSV 到网格
问题描述
我有一个 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()))
将项目添加到循环中的同一列表中。
推荐阅读
- c++ - 特征模板函数正确声明
- javascript - 使用浏览器javascript,如何获取用户指定本地目录的文件和子文件夹的内容
- android - Android x PreferenceFragmentCompat 重叠 androidx.fragment.app.Fragment
- github - Github 全局默认问题模板不起作用
- python - 如何在存储过程中使用 python 传递对象类型作为 IN OUT 参数
- node.js - 包含在包含在续集中
- excel - 从 Excel(Visual Basic) 中删除不需要的字符
- java - 加强新线问题
- javascript - 画布用边框画线
- r - 致命错误:以用户身份启动 Linux R 时无法创建“R_TempDir”,但不能以 root 身份启动