将来自jtextfields的数据放入JButton上的arraylist中(Actionlistener)

时间:2012-12-06 12:28:42

标签: java multithreading arraylist actionlistener jtextfield

很抱歉,如果我对我的问题的解释有点笨拙。

好吧,我正在尝试添加X个JTextFields并将每个内容(int)添加到arrayList中。我想通过点击我的提交按钮向arraylist发送这些信息。

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

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

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

    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 ?


            }

1 个答案:

答案 0 :(得分: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());
      }
  }