Java Swing:JButton创建新的JTextField(s)

时间:2012-06-16 07:56:57

标签: java swing jpanel jbutton jtextfield

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

1 个答案:

答案 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更好,因为它会动态增长,你不必处理数组边界,甚至可以跳过计数(列表也为你做了)。