很抱歉,如果我对我的问题的解释有点笨拙。
好吧,我正在尝试添加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 ?
}
答案 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());
}
}