【问题标题】:JavaFX: How to setText of ComboBoxes and ToggleButtons in loop?JavaFX:如何在循环中设置组合框和切换按钮的文本?
【发布时间】:2019-03-18 17:40:57
【问题描述】:

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

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

当我的应用程序启动时,我想为每个人设置 ToggleButton 一个特定的文本,我在 JSON 文件中为特定成员准备了该文本。我计划通过使用 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());
        }
    }
}

但是当我这样做时,我的循环不起作用。我对每个人都有相同的文本切换按钮,但在 JSON 文件中我有不同的文本。我在这里需要一个 ObservableList 而不是标准的 java List 吗?

关于 ComboBoxes 的相同问题(我知道我应该使用索引,我也将它放在与成员 ID/索引相同的 JSON 文件中)。

为 JavaFX 对象设置循环中的文本应该怎么做?

【问题讨论】:

    标签: json loops javafx combobox togglebutton


    【解决方案1】:

    您的循环逻辑是错误的 - 您多次设置每个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 文件时可能会出现一些错误,您将需要先修复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 2015-02-01
      • 2021-11-24
      • 1970-01-01
      • 2016-03-28
      相关资源
      最近更新 更多