2016-04-14 230 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

谢谢!我最终将List作为代码所在的类的私有变量,以便通过其他方法访问它,但我没有声明它是在类中。 – CSjunkie