2015-04-19 54 views
0

我使用for循环生成了N个文本字段(N是用户输入的输入数量)。我想获取用户在这些文本字段中输入的数据并将其保存在ArrayList中。我不知道这些字段的名称,所以有什么方法可以获取文本字段名称?或者,如何将N个文本字段的数据存储到ArrayList并使用该ArrayList中的值。这里是我的代码:如何从Java中动态生成的文本字段获取数据?

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

你不需要名称字段,你需要的领域本身。您可以遍历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); 
    } 
} 
+0

我已经做了修改你的建议..但现在它给错误: “不兼容的类型:对象不能转换为JTextField” 在这一行: 为(JTextField textField:ARR){ –

+0

谢谢..但现在它给错误:“无法找到符号..symbol:方法getText()..位置:变量jTextField的类型对象“on line:'texts.add((JTextField)textField.getText());' –

+0

@MuhammadShuja - 哎呀,对不起,忘了括号...现在试试.. –

相关问题