2016-04-14 2 views
0

Я хочу создать несколько JTextFields, которые затем могут получить пользовательские данные, как только они нажмут кнопку отправки. Я использую приведенный ниже код для динамического создания меток для текстовых полей и планировал создавать текстовые поля аналогичным образом, но я понял, что если я сделаю это, у полей не будет имен переменных, и я не смогу для извлечения данных. Есть ли способ динамически назначать имена переменных или иным образом извлекать данные из текстовых полей, если я их создаю так, как показано ниже?Java Swing - динамически создавать JTextField

int autoX = 0; 
    int autoY = 0; 
    for (int i = 0; i< units.numOfUnits(); i++){ 
     c.gridx = (autoX % 5); 
     c.gridy = autoY; 
     if((autoX % 5) == 4){ 
      autoY++; 
     } 
     mainPanel.add(new JLabel(units.getUnit(i)),c); 
     autoX++; 
    } 

ответ

4

Необходимо сохранить ссылку на созданные вами текстовые поля. Как это:

List<JTextField> textFields = new ArrayList<JTextField>(); 
int autoX = 0; 
int autoY = 0; 
for (int i = 0; i< units.numOfUnits(); i++){ 
    c.gridx = (autoX % 5); 
    c.gridy = autoY; 
    if((autoX % 5) == 4){ 
     autoY++; 
    } 
    mainPanel.add(new JLabel(units.getUnit(i)),c); 
    JTextField textField = new JTextField(); 
    mainPanel.add(textField); 
    textFields.add(textField); 
    autoX++; 
} 

Затем вы можете обратиться к конкретному текстовое поле с:

textFields.get(0).getText(); 
+1

Спасибо! Я закончил тем, что создал список как приватную переменную класса, в котором находится код, чтобы сделать его доступным другими способами, но я не утверждал, что он был в классе. – CSjunkie

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