【问题标题】:java:how to store values of dynamically generated textfieldsjava:如何存储动态生成的文本字段的值
【发布时间】:2012-06-03 13:22:30
【问题描述】:

我已经动态生成了文本字段。生成多少个文本字段,用户给出的数字。生成文本字段后,用户将姓名和联系电话插入文本字段。所以我的问题是如何将这些值存储到数据库中。我正在使用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);
    }
    }

【问题讨论】:

    标签: java mysql swing netbeans-7


    【解决方案1】:

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

    String x = yourInputField.getText();
    

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

    【讨论】:

    • 我正在使用 netbeans 7。文本字段是动态生成的,所以我没有得到输入字段名称。这就是为什么我能够使用 getText() 方法。 :(
    • 但是你有 tf 和 tf1 有 getText() 方法,我错过了什么吗?
    • @O.D- 我试过 tf.getText() 和 tf1.getText(),但它打印的是 'JTextfield1.getText()' 而不是 textfield 的值。
    • 奇怪!很高兴调试老兄。设置 aq 断点以检查 GetText() 的值进入循环,然后。
    【解决方案2】:

    在您的事件侦听器方法中,您可以通过 JPanel 循环访问其中的所有 TextFields。

    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.
        }
    }
    

    【讨论】:

      【解决方案3】:

      您可以将所有JTextFields 的引用存储到List&lt;JTextField&gt; 中,然后您可以从那里通过遍历列表来访问它们。

      您将需要两个像这样的变量 -

      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
      }
      

      【讨论】:

      • 我试过这个代码它不能通过使用方法返回Textfield的值 for(JTextField field : yourArrayListForName) { field.getText(); // 这里会获取输入 }
      【解决方案4】:

      使用数组处理文本字段,然后您必须能够: 像这样从 textField 中获取字符串:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-02
        • 2013-07-02
        相关资源
        最近更新 更多