Java 从动态创建的JTextFields获取内容
我正在用Swing学习Java,在使用Java 从动态创建的JTextFields获取内容,java,swing,jtextfield,Java,Swing,Jtextfield,我正在用Swing学习Java,在使用JTextField时遇到了一些问题。在我的程序中,我想动态添加几个JTextFields和一些文本: while( (ln = bufFile.readLine()) != null ) { // inIdPanel is JPanel inIdPanel.add(new JTextField(ln)); } 而且效果很好。但是,用户可以修改这些JTextFields的内容,稍后我想从所有这些字段调用getText()。这可能吗?我该怎么
JTextField
时遇到了一些问题。在我的程序中,我想动态添加几个JTextFields
和一些文本:
while( (ln = bufFile.readLine()) != null ) {
// inIdPanel is JPanel
inIdPanel.add(new JTextField(ln));
}
而且效果很好。但是,用户可以修改这些JTextFields
的内容,稍后我想从所有这些字段调用getText()
。这可能吗?我该怎么做
我看到了这个问题:但这还不足以解决我的问题(我认为在我的案例中使用数组不是一个好主意,但可能我错了)。要获得一个简单的解决方案,只需添加一个
ArrayList textFieldList
并添加到您发布的代码中:
while((ln = bufFile.readLine()) != null) {
textFieldList.add(new JTextField(ln));
inIdPanel.add(textFieldList.get(textFieldList.size()-1));
}
然后,当您想要访问文本字段时,您只需遍历它们,例如
for (JTextField jtf : textFieldList) {
/* Operate on jtf, call methods, etc */
}
如果对可以添加的文本字段数量有定义的限制,则可以用数组替换
ArrayList
,但如果数量未知,则列表很好。要简单解决此问题,只需添加ArrayList textFieldList
并添加到您发布的代码中:
while((ln = bufFile.readLine()) != null) {
textFieldList.add(new JTextField(ln));
inIdPanel.add(textFieldList.get(textFieldList.size()-1));
}
然后,当您想要访问文本字段时,您只需遍历它们,例如
for (JTextField jtf : textFieldList) {
/* Operate on jtf, call methods, etc */
}
如果对可以添加的文本字段数量有定义的限制,则可以用数组替换
ArrayList
,但如果数量未知,则该列表很好。无法调用getText()
的原因是,您在创建JTextField
时没有存储对该字段的引用。创建时需要使用or来存储JtextField
s,以便以后可以对其调用该方法。一个集合
将比一个数组
更容易,因为您不知道要读入多少行,所以希望它能够增长
List<JTextField> fields = new ArrayList<JTTextField>();
while( (ln = bufFile.readLine()) != null ) {
JTextField field = new JTextField(ln);
inIdPanel.add(field);
fields.add(field);
}
无法调用
getText()
的原因是,在创建JTextField
时,没有存储对它的引用。创建时需要使用or来存储JtextField
s,以便以后可以对其调用该方法。一个集合
将比一个数组
更容易,因为您不知道要读入多少行,所以希望它能够增长
List<JTextField> fields = new ArrayList<JTTextField>();
while( (ln = bufFile.readLine()) != null ) {
JTextField field = new JTextField(ln);
inIdPanel.add(field);
fields.add(field);
}