1

您好 :) 我是 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;
            }
    }
}
4

1 回答 1

1

由于您已经存储了对文本字段的引用,因此只需使用此数组来查询文本字段的文本:

tfData[counter-1].getText();

将显示最后添加的文本字段的文本。

但是您确实应该在之前初始化您的数组,否则您将无法向其中添加任何项目。我认为这是您注释掉添加代码时的主要问题。

// think about how many text fields you will need (here: 16)
private JTextField tfData[] = new tfData[16];

如果您使用的是数组,请注意不要超出其界限。但是最好使用之前评论中建议的列表,因为它会动态增长,您不必处理数组边界,甚至可以跳过计数(该列表也可以为您做到这一点)。

于 2012-06-16T08:20:57.697 回答