我正在使用Swing学习Java,并且在使用JTextField
时遇到一些问题。在我的程序中,我想动态添加一些带有文本的JTextFields
:
while( (ln = bufFile.readLine()) != null ) {
// inIdPanel is JPanel
inIdPanel.add(new JTextField(ln));
}
而且效果很好。但是,这些
JTextFields
的内容可以由用户修改,以后我想从所有这些对象中调用getText()
。这可能吗?我怎样才能做到这一点?我看到了一个问题:Java Swing: JButton creates new JTextField(s),但这还不足以解决我的问题(我认为在我的情况下使用数组不是一个好主意,但也许我错了)。
最佳答案
无法调用getText()
的原因是,创建JTextField
时没有存储对它的引用。创建JtextField
时,您将需要使用array或collection来存储它们,以便以后可以在它们上调用该方法。 collection
比array
容易,因为您不知道要读多少行,因此希望它能够增长。
List<JTextField> fields = new ArrayList<JTTextField>();
while( (ln = bufFile.readLine()) != null ) {
JTextField field = new JTextField(ln);
inIdPanel.add(field);
fields.add(field);
}
然后,您可以从所有人中调用
.getText()
for(JTextField field: fields){
System.out.println(field.getText());
}