Java-在运行时使用引用名称添加Swing组件?
我目前正在开发一个应用程序,该应用程序在运行时使用以下方法将JTextFields添加到面板: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;
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 ...
}