首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaFX:如何在循环中setText of ComboBoxes和ToggleButtons?

JavaFX:如何在循环中setText of ComboBoxes和ToggleButtons?
EN

Stack Overflow用户
提问于 2018-10-14 05:08:51
回答 1查看 62关注 0票数 1

我有一个JavaFX应用程序,其中包含大量的ToggleButtons、ComboBoxes和TextFields,它们按类型组织在列表中。我还有一个JSON文件,其中包含我的成员的类对象列表。

当然,我有一个@FXML注释按钮,用于按钮,等等。

我计划通过使用initialize()方法调用我的方法fillToggleButtons()来实现这一点:

代码语言:javascript
复制
List<Member> membersFromJSON = new ArrayList<>();
List<ToggleButton> sendToTeamMembers = new ArrayList<>();

代码语言:javascript
复制
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对象设置循环中的文本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-14 06:39:45

您的循环逻辑是错误的-您多次设置每个ToggleButton的文本(首先设置为members.get(0).getName(),然后设置为members.get(1).getName(),依此类推)。最后,每个ToggleButton将其名称设置为列表中最后一个成员的名称。

您只需要一个for循环:

代码语言:javascript
复制
for (int i = 0; i < sendToTeamMembers.size(); i++) {
    sendToTeamMembers.get(i).setText(members.get(i).getName());
}

在调用上面的代码之前,一定要检查members列表是否至少包含sendToTeamMembers.size()元素-如果没有,则可能是加载/解析JSON文件时出现了一些错误,您需要首先修复这些错误。

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

https://stackoverflow.com/questions/52797343

复制
相关文章

相似问题

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