我目前正在开发一个应用程序,它在运行时使用以下命令将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++;
因此,每次运行TextField时,将分别称为row1,row2,row3。
谢谢。
答案 0 :(得分:2)
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();
}
答案 1 :(得分:1)
据我所知,这是不可能的。另一种(也许更简洁)的方法是在创建标签时存储标签
JTextField label = new JTextField(20);
fieldList.add(label);
pnlRows.add(label);
然后,您可以使用fieldList访问所需的文本字段:
JTextField label = fieldList.get(row);
编辑:fieldList是
List<JTextField>
当然。
答案 2 :(得分:1)
不,没有,您需要做的是将它们添加到列表中,以便以后可以全部获取它们。
你班上的某个地方需要这个:
List<JTextField> fields = new ArrayList<JTextField>();
然后,当他们添加它们时,你可以这样做:
int rowCounter = fields.size()+1;
pnlRows.add(new JLabel("Row " + rowCounter));
JTextField field = new JTextField(20);
pnlRows.add(field);
fields.add(field);
pnlRows.revalidate();
validate();
然后最后你想要得到它们你可以迭代列表并逐个获取所有文本字段。
for(JTextField field : fields){
dostuff ...
}