你好:)我是Java Swing的初学者,我不能谷歌解决我的问题。我有一个JPanel,并希望在按下JButton后动态添加JTextField。我怎样才能从以后获取它们的文本?我的代码,评论部分无法正常工作。
变量'计数器'计算我在面板中的字段数。
public class AppPanel extends JPanel {
private JTextField tfData[];
private JButton btAdd;
private int counter = 1;
public AppPanel() {
setLayout(null);
//tfData[counter] = new JTextField();
//tfData[counter-1].setBounds(20, 20, 250, 20);
//add(tfData[counter-1]);
btAdd = new JButton("Add field");
btAdd.setBounds(280, 20, 120, 20);
btAdd.addActionListener(new alAdd());
add(btAdd);
}
class alAdd implements ActionListener {
public void actionPerformed(ActionEvent e) {
//tfData[counter] = new JTextField();
//tfData[counter].setBounds(20, 20+20*counter, 250, 20);
//add(tfData[counter]);
++counter;
}
}
}
答案 0 :(得分:1)
由于您已经存储了对文本字段的引用,只需使用此数组来查询文本字段的文本:
tfData[counter-1].getText();
将显示上次添加的文本字段的文本。
但是你之前应该初始化你的数组,否则你将无法添加任何项目。我认为这是你的主要问题,因为你注释了你的添加代码。
// think about how many text fields you will need (here: 16)
private JTextField tfData[] = new tfData[16];
如果您正在使用数组,请注意不要突破其范围。但是之前评论中提出的use a list更好,因为它会动态增长,你不必处理数组边界,甚至可以跳过计数(列表也为你做了)。