我有一个JavaFX应用程序,其中包含大量的ToggleButtons、ComboBoxes和TextFields,它们按类型组织在列表中。我还有一个JSON文件,其中包含我的成员的类对象列表。
当然,我有一个@FXML注释按钮,用于按钮,等等。
我计划通过使用initialize()方法调用我的方法fillToggleButtons()来实现这一点:
List<Member> membersFromJSON = new ArrayList<>();
List<ToggleButton> sendToTeamMembers = new ArrayList<>();
private void fillToggleButtons() {
Reader reader = null;
try {
reader = new FileReader(JSONFilePaths.membersJSONFilePath);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Gson gson = new Gson();
Type memberList = new TypeToken<ArrayList<Member>>() {}.getType();
List<Member> members = gson.fromJson(reader, memberList);
for (int i = 0; i < sendToTeamMembers.size(); i++) {
for (int k = 0; k < members.size(); k++) {
sendToTeamMembers.get(i).setText(members.get(k).getName());
}
}
}
但是当我这样做的时候,我的循环就不工作了。我对每个ToggleButton都有相同的文本,但是在JSON文件中我有不同的文本。这里是否需要ObservableList而不是标准的java列表?
如何为JavaFX对象设置循环中的文本?
发布于 2018-10-14 06:39:45
您的循环逻辑是错误的-您多次设置每个ToggleButton
的文本(首先设置为members.get(0).getName()
,然后设置为members.get(1).getName()
,依此类推)。最后,每个ToggleButton
将其名称设置为列表中最后一个成员的名称。
您只需要一个for
循环:
for (int i = 0; i < sendToTeamMembers.size(); i++) {
sendToTeamMembers.get(i).setText(members.get(i).getName());
}
在调用上面的代码之前,一定要检查members
列表是否至少包含sendToTeamMembers.size()
元素-如果没有,则可能是加载/解析JSON
文件时出现了一些错误,您需要首先修复这些错误。
https://stackoverflow.com/questions/52797343
复制相似问题