2012-05-29 59 views
1

我已经动态地生成了文本字段。用户给出的编号有多少个文本字段。生成文本字段用户goin后,将姓名和联系人编号插入到文本字段中。所以我的问题是如何将这些值存储到数据库中。我正在使用Mysql。我知道getText()方法,但如何使用它?这里是动态生成的文本字段的代码。java:如何存储动态生成的文本字段的值

private void Extra() 
{ 
if(no_of_people.getText().equals(" ")) 
{ 
    String st="The entry 'Number of People' should not be blank."; 
    JOptionPane.showMessageDialog(null,st); 
}  
try 
{ 
String nop=(no_of_people.getText().toString()); 
int nop1 = Integer.parseInt(nop.trim()); 
int j=nop1; 

Extra_people extrpeo=new Extra_people(); 
JPanel panel = new JPanel(); 
extrpeo.setSize(450,500); 
extrpeo.setVisible(true); 
extrpeo.setLayout(new java.awt.BorderLayout()); 
extrpeo.add(panel); 
extrpeo.validate(); 
Vector textFieldVector = new Vector(); 
JLabel lb1,lb2; 
JTextField tf,tf1; 
int i=1; 
while (i <= nop1) 
{ 
    lb1=new JLabel("Name "+i); 
    panel.add(lb1); 
    tf = new JTextField(10); 
    textFieldVector.add(tf); 
    panel.add(tf); 
    //String value = tf.getText(); 
    lb2=new JLabel("Contact Number "+i); 
    panel.add(lb2); 
    tf1 = new JTextField(10); 
    textFieldVector.add(tf1); 
    panel.add(tf1); 
    i++; 
    } 
    panel.validate(); 
    panel.repaint(); 
    }  
    catch(Exception e) 
    { 
     System.out.println(" "+e); 
    } 
    } 

回答

0

你可以给所有的JTextField S中的引用存储到List<JTextField>,然后从那里,你将能够只通过列表迭代来访问它们。

你需要两个变量这样的 -

List<JTextField> yourArrayListForName = new ArrayList<JTextField>(); 
List<JTextField> yourArrayListForContact = new ArrayList<JTextField>(); 

然后修改while环 -

while (i <= nop1) 
{ 
    lb1=new JLabel("Name "+i); 
    panel.add(lb1); 

    tf = new JTextField(10); 
    textFieldVector.add(tf); 
    panel.add(tf); 
    yourArrayListForName.add(tf);  // add this line 

    //String value = tf.getText(); 
    lb2=new JLabel("Contact Number "+i); 
    panel.add(lb2); 

    tf1 = new JTextField(10); 
    textFieldVector.add(tf1); 
    panel.add(tf1); 
    yourArrayListForContact.add(tf1);  // add this line 

    i++; 
} 

然后,当你需要访问这些值,使用类似如下 -

for(JTextField field : yourArrayListForName) 
{ 
    field.getText();  // input will be obtained here 
} 

for(JTextField field : yourArrayListForContact) 
{ 
    field.getText();  // input will be obtained here 
} 
+0

我试过这段代码它不能通过使用(JTextField字段:yourArrayListForName)的方法返回Textfield的值 {field.getText(); //输入将在这里获得 } – Anjali

0

通过调用yourTextField.getTex来获取文本字段中的字符串t()方法,只要你需要它。

String x = yourInputField.getText(); 

将动作侦听器附加到文本字段。只要用户在该字段中输入Enter,就会调用它。听众可以将信息写入数据库。

+0

我正在使用netbeans 7. textfields是动态生成的,所以我没有得到输入字段名称。这就是为什么我可以使用getText()方法。 :( – Anjali

+1

但你有tf和tf1其中有getText()方法,我错过了什么? – CloudyMarble

+0

@ OD-我试过tf.getText()和tf1.getText(),但它的打印文档'JTextfield1.getText() '而不是textfield的值 – Anjali

0

在您的事件侦听器方法中,您可以通过JPanel为其中的所有TextField s循环。

for (Component c : panel1.getComponents()) { 
    if (c instanceof JTextField) { 
     JTextField textField = ((JTextField)c); 
     String name; 
     String contact; 
     if(textField.getName().startsWith("Name") { 
      // Name field 
      name = textField.getText(); 
     } else { 
      // Contact field 
      contact = textField.getText(); 

     } 
     // Validate and persist. 
    } 
} 
0

亨德尔的使用数组文本框,然后你要能从这些: 获取从文本框像这样的字符串:

str[i] = textField[i].getText(); 

,但你必须定义字符串数组第一:

String[] str[] = new String[nop1](); 

然后将它们存储到数据库中。

相关问题