Java Vaadin:CSV 到网格
Java Vaadin: CSV to Grid
我有一个 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()))
将项目添加到循环中的同一列表。
您在每次迭代时创建一个新列表,因此您丢失了以前的内容。
tools = Arrays.asList(new CTITools(s.next()));
您应该只将项目添加到同一个 tools
列表
List<CTITools> tools = new ArrayList<>();
for (Iterator<String> s = sc; s.hasNext(); ) {
tools.add(new CTITools(s.next()));
}
我有一个 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()))
将项目添加到循环中的同一列表。
您在每次迭代时创建一个新列表,因此您丢失了以前的内容。
tools = Arrays.asList(new CTITools(s.next()));
您应该只将项目添加到同一个 tools
列表
List<CTITools> tools = new ArrayList<>();
for (Iterator<String> s = sc; s.hasNext(); ) {
tools.add(new CTITools(s.next()));
}