我正在编写一个包含JButton的程序。每次单击按钮时,都会将新的JTextField添加到JPanel

我的问题是,在用户创建所有JTextFields并将其填充信息之后,我需要获取每个字段的文本。动态生成JTextFields时,由于它们没有实例名称,如何获得它们的访问权限?有没有更好的方法来获取每个文本,而又不知道它们的实例名称。

这是actionPerformedJButton事件的代码...

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
    JTextField x = new JTextField();
    x.setColumns(12);
    p.add(x);
    validate();
}

最佳答案

您说您想从每个字段中获取文本。因此,在创建新实例x时,为什么不保留它们的集合,例如将JTextFields添加到ArrayList

另外,假设pJPanel,则应该能够获取所有子级,也就是要添加的JTextFields。尝试像这样使用getComponents() ...

Component[] children = p.getComponents();
for (int i=0;i<children.length;i++){
    if (children[i] instanceof JTextField){
        String text = ((JTextField)children[i]).getText():
    }
}

10-01 00:17