我正在编写一个包含JButton
的程序。每次单击按钮时,都会将新的JTextField
添加到JPanel
。
我的问题是,在用户创建所有JTextFields
并将其填充信息之后,我需要获取每个字段的文本。动态生成JTextFields
时,由于它们没有实例名称,如何获得它们的访问权限?有没有更好的方法来获取每个文本,而又不知道它们的实例名称。
这是actionPerformed
的JButton
事件的代码...
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
JTextField x = new JTextField();
x.setColumns(12);
p.add(x);
validate();
}
最佳答案
您说您想从每个字段中获取文本。因此,在创建新实例x
时,为什么不保留它们的集合,例如将JTextFields
添加到ArrayList
?
另外,假设p
是JPanel
,则应该能够获取所有子级,也就是要添加的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():
}
}