Java-在运行时使用引用名称添加Swing组件?

Java-在运行时使用引用名称添加Swing组件?,java,swing,reference,runtime,Java,Swing,Reference,Runtime,我目前正在开发一个应用程序,该应用程序在运行时使用以下方法将JTextFields添加到面板: int rowCounter = 1; pnlRows.add(new JLabel("Row " + rowCounter)); pnlRows.add(new JTextField(20)); pnlRows.revalidate(); validate(); 我的问题是,我想在方法中使用它们的值,但无法引用它们 有没有一种方法可以做到以下几点: int i = 1;

我目前正在开发一个应用程序,该应用程序在运行时使用以下方法将JTextFields添加到面板:

int rowCounter = 1;             
pnlRows.add(new JLabel("Row " + rowCounter));
pnlRows.add(new JTextField(20));
pnlRows.revalidate();
validate();
我的问题是,我想在方法中使用它们的值,但无法引用它们

有没有一种方法可以做到以下几点:

int i = 1;
JTextField row + i = new JTextField();
i++;
因此,每次运行时,生成的文本字段将分别称为row1、row2和row3

谢谢。

公共列表行=新建链接列表();
public List<JTextField> rows = new Linkedlist<JTextField>();

addRow() {
    JTextField field = new JTextField(20);
    rows.add(field);
    pnlRows.add(new JLabel("Row " + rows.size()));
    pnlRows.add(field);
    pnlRows.revalidate();
    validate();
}
addRow(){ JTextField=新的JTextField(20); 行。添加(字段); pnlRows.add(新JLabel(“Row”+rows.size()); pnlRows.add(字段); pnlRows.revalidate(); 验证(); }
据我所知,这是不可能的。另一种(也许更简洁)方法是在创建标签时存储标签,如

JTextField label = new JTextField(20);
fieldList.add(label);
pnlRows.add(label);
然后,您可以使用字段列表访问所需的文本字段:

JTextField label = fieldList.get(row);
编辑:字段列表是一个

List<JTextField>
列表

当然。

不,没有,您需要做的是将它们添加到列表中,以便以后可以全部获取它们

在你们班的某个地方,你们需要这个:

List<JTextField> fields = new ArrayList<JTextField>();
最后,如果你想得到所有这些,你可以迭代列表,一个接一个地得到所有的文本字段

for(JTextField field : fields){
    dostuff ...
}

这很好,尽管您不需要调用revalidate()+validate()。单独使用revalidate()就足够了。为什么要使用链表?这几乎从来都不是最好的选择。
for(JTextField field : fields){
    dostuff ...
}