0

对不起,如果我对我的问题的解释有点笨拙。

好吧,我正在尝试添加 X 数量的 JTextField,并将其中每个的内容(int)添加到 arrayList 中。我想在单击我的提交按钮时发送带有此信息的数组列表。

所以这里是循环,它创建 JTextFields 并应该将字段中的数据添加到 arraylist。

If I enter antalVare = new JTextField("0"),
the 0 will be added to the arraylist, 

但它应该在单击我的 JButton 时再次用来自 JTextFields 的数据填充数组列表。我怎样才能做到这一点?我尝试了使用线程的不同方法,但失败了。

    kundeOrdreArrayList = new ArrayList<String>();

    alleVarerList = kaldSQL.alleVarer(connectDB);

    try {
        while (alleVarerList.next()) {
            antalVare = new JTextField();

            innerPanel.add(new JLabel(alleVarerList.getString(2) + " ("
                    + alleVarerList.getString(3) + ",- kr.)"));
            innerPanel.add(antalVare);
            innerPanel.add(new JLabel(""));
            kundeOrdreArrayList.add(antalVare.getText());
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }

    innerPanel.add(new JLabel(""));
    innerPanel.add(submit);
    innerPanel.add(new JLabel(""));

这是我的 ActionListener:

if (a.getSource().equals(submit)) {
        // DO SOMETHING ?


            }
4

1 回答 1

0

在您的第一个代码片段中,您添加的值是此时kundeOrdreArrayList文本字段的值。之后更改文本字段时不会更新这些值。

因此,在您的 ActionListener 中,您需要再次遍历所有 JTextField。为此,首先更改您的第一个代码片段以跟踪您拥有的所有 JTextField。因此,在您的类中添加一个新字段“ArrayList textfields”,然后(用// ++

textfields = new ArrayList<JTextField>(); // ++

try {
    while (alleVarerList.next()) {
        antalVare = new JTextField();
        textfields.add(antalVare); // ++

        innerPanel.add(new JLabel(alleVarerList.getString(2) + " ("
                + alleVarerList.getString(3) + ",- kr.)"));
        innerPanel.add(antalVare);
        innerPanel.add(new JLabel(""));
        kundeOrdreArrayList.add(antalVare.getText());
    }

现在,在您的 ActionListener 中,清除 kundeOrdreArrayList 并再次添加所有 JTextFields 中的值:

  if (a.getSource().equals(submit)) {
      kundeOrdreArrayList.clear();
      for (JTextField field : textfields) {
           kundeOrdreArrayList.add(field.getText());
      }
  }
于 2012-12-06T15:13:12.467 回答