我正在使用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时,您将需要使用arraycollection来存储它们,以便以后可以在它们上调用该方法。 collectionarray容易,因为您不知道要读多少行,因此希望它能够增长。

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());
}

09-27 08:17