2013-06-14 3 views
0

Я создал приложение, которое получит имя столбца базы данных и создаст jlabel и jtextfield во время выполнения на основе имен столбцов db.Получите значение из созданного JTextfield во время выполнения

Вот фрагмент кода: Im используя Netbeans здесь ...

public void getColumn(){ 
     String sql = "SELECT * from user"; 
     jPanel.setLayout(new GridLayout(0,2)); 

     try { 
      pst = conn.prepareStatement(sql); 
      rs = pst.executeQuery(); 
      ResultSetMetaData rsmd = rs.getMetaData(); 
      int columnCount = rsmd.getColumnCount(); 

      ArrayList<String> columns= new ArrayList<String>(); 
      for(int i = 1; i<= columnCount; i++){ 
       columns.add(rsmd.getColumnName(i)); 
       System.out.println(String.valueOf(columns)); 
      } 
      ArrayList<JTextField> fields = new ArrayList<JTextField>(); 
     for(int i = 0; i <columns.size();i++){ 
       JLabel jl = new JLabel(String.valueOf(columns.get(i))); 
      jPanel.add(jl); 
      JTextField f = new JTextField(50); 
      fields.add(f); 
      jPanel.add(f); 
         this.revalidate(); 
         this.repaint(); 
       } 

     } catch (Exception e) { 
      JOptionPane.showMessageDialog(null, e.getMessage()); 
     } 
    } 


Это будет пример вывода.

id | ______________ 
fName | _____________ 
mName | _______________ 
lName | ________________ 

линия, относящаяся к JTextFields ..

Однако, я не могу получить значение, введенное в JTextFields. Я пробовал использовать код ниже. Но не повезло. Любая помощь оценивается.

for(JTextField field : fields){ 
       JOptionPane.showMessageDialog(null, field.getText()); 
     } 
+0

Похоже, вы затеняете свои переменные, но без дальнейшего кода невозможно знать – MadProgrammer

+0

Я использую netbeans здесь. – kuletzxc

+0

Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

ответ

0

Может быть, вы можете попробовать это:

Component children[] = jp.getComponents(); 
for(Component child : children) { 
    if(child instanceof JTextField) [ 
    JOptionPane.showMessageDialog(null, ((JTextField)child).getText()); 
    } 
} 
+0

Не работает помощник. Я тестировал его и не выводил. – kuletzxc

+0

Невозможно помочь, не получив подробный код, особенно где и как инициализируется 'jp' – Mubin

+0

Я отправлю свой полный код. Я использую netbeans. – kuletzxc

0

Лучшим решением было бы использовать JTable. Прочтите раздел из руководства Swing по телефону How to Use Tables для получения дополнительной информации.

Вы также можете ознакомиться с кодом Table From Database для получения некоторого простого кода, чтобы вы начали. См. Код «TableFromDatabaseExample» для самого простого решения.

+0

Мне не нужно выводить мой запрос в JTable. Мне просто нужны имена столбцов моей базы данных, а затем создать jlabel и jtextfield во время выполнения в соответствии с именами столбцов моего db. Я уже сделал отображение jtextfields и jlabel во время выполнения в соответствии с моим запросом. Но я не могу получить значения из тех JTextfields, которые были превзойдены во время выполнения. – kuletzxc

+0

Я понимаю, поэтому я предложил JTable. Это лучший дисплей, поскольку он более компактный, и вы можете легко прокручивать таблицу, и у вас есть доступ к данным через TableModel. – camickr

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