2012-05-29 3 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 с в 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) { field.getText(); // ввод будет получен здесь } – Anjali

0

Получить строку в текстовом поле, позвонив по адресу yourTextField.getTex t(), когда вам это нужно.

String x = yourInputField.getText(); 

Прикрепите прослушиватель действий к текстовому полю. Он вызывается всякий раз, когда пользователь вводит Enter в этом поле. Затем слушатель может записать информацию в БД.

+0

Я использую netbeans 7. Текстовые поля генерируются динамически, поэтому я не получаю имя поля ввода. Thatswhy я могу использовать метод getText(). :( – Anjali

+1

но у вас есть tf и tf1, у которого есть метод getText(), я что-то пропустил? – CloudyMarble

+0

@ OD- Я пробовал tf.getText() и tf1.getText(), но его печать «JTextfield1.getText() 'вместо значения текстового поля. – 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

Handel в TextFields с массивом, то вы должны в состоянии эти: Получить строку из TextField так:

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

но вы должны определить массив строк первого:

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

затем сохраните их в базе данных.

Смежные вопросы