2

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

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);
    }
    }
4

4 回答 4

0

JTextField您可以将所有s的引用存储到一个 sList<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
}
于 2012-05-29T10:18:53.477 回答
0

在需要时通过调用 yourTextField.getText() 方法来获取文本字段中的字符串。

String x = yourInputField.getText();

将动作侦听器附加到文本字段。每当用户在该字段中输入 Enter 时都会调用它。然后侦听器可以将信息写入数据库。

于 2012-05-29T10:20:52.160 回答
0

用数组处理 textFields,然后你必须能够: 从 textField 中获取字符串,如下所示:

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

但您必须先定义字符串数组:

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

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

于 2012-05-29T10:31:31.280 回答
0

在您的事件侦听器方法中,您可以遍历其中的JPanelfor all TextField

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.
    }
}
于 2012-05-29T10:24:40.780 回答