我使用for循环生成了N个文本字段(N是用户输入的输入数)。我希望用户在这些文本字段中输入数据并将其保存在ArrayList中。我不知道那些字段的名称,所以有没有办法获取文本字段名称?或者如何将来自N个文本字段的数据存储到ArrayList
并使用该ArrayList中的值。这是我的代码:
public class FCFS extends JFrame implements ActionListener{
JButton btn1,btn2,b;
JTextField tf1,tf2;
JPanel p;
Container c;
ArrayList arr=new ArrayList();
public FCFS(){
//super("FCFS");
c=getContentPane();
p=new JPanel();
JLabel lbl1=new JLabel("Enter number of processes:");
p.add(lbl1);
tf1=new JTextField(20);
p.add(tf1);
btn1=new JButton("Enter");
btn1.addActionListener(this);
p.add(btn1);
c.add(p);
}
public static void main(String args[]){
FCFS obj=new FCFS();
obj.setVisible(true);
obj.setSize(300,500);
obj.setDefaultCloseOperation(3);
}
@Override
public void actionPerformed(ActionEvent ae){
if(ae.getSource()==btn1){
p.removeAll();
int a=Integer.parseInt(tf1.getText());
for(int i=1;i<=a;i++){
p.add(new JLabel("Enter Burst for Process "+i+":"));
tf2=new JTextField(20);
p.add(tf2);
arr.add(tf2.getText());
c.add(p);
revalidate();
repaint();
}
b=new JButton("Show");
p.add(b);
c.add(p);
revalidate();
repaint();
b.addActionListener(this);
}
else if(ae. getSource()==b){
System.out.println("Hello");
System.out.println(arr);
}
}
}
答案 0 :(得分:0)
您不需要字段的名称,您需要字段本身。您可以迭代Panel
,找到所有文本字段,或者将它们保存在数组中,然后在您想要使用它们时提取它们的值:
@Override
public void actionPerformed(ActionEvent ae){
if(ae.getSource()==btn1){
p.removeAll();
int a=Integer.parseInt(tf1.getText());
for(int i=1;i<=a;i++){
p.add(new JLabel("Enter Burst for Process "+i+":"));
tf2=new JTextField(20);
p.add(tf2);
arr.add(tf2);
}
b=new JButton("Show");
p.add(b);
c.add(p);
revalidate();
repaint();
b.addActionListener(this);
}
else if(ae.getSource()==b){
System.out.println("Hello");
ArrayList texts=new ArrayList();
for (Object textField : arr) {
texts.add(((JTextField)textField).getText();
}
System.out.println(texts);
}
}