如何获取动态创建的文本字段的值

0 java arrays swing arraylist

请任何人帮我解决我的这个代码.我正在开发一个需要动态创建文本字段的项目,虽然我能够创建文本字段但是我无法获得需要存储在数组中的用户输入.这是我使用的代码;

Public void actionPerformed(ActionEvent e){
   String value = textField.getText();
   int values = Integer.parseInt(value);
   int sum = 10;
   for(int I=0; I < values; I++){
       TextField field = new TextField();
       field.setBound(10,sum,107,22);
       Panel.add(field);
       sum += 28;
       }
   }
});
Run Code Online (Sandbox Code Playgroud)

但我无法编写任何成功的代码来获取textFields的值.

Hov*_*els 6

您的问题是访问引用的问题 - 这意味着,一旦您创建了对象,您就没有简单的方法可以在需要时获得适当的引用.解决方案是使用集合(例如作为ArrayList<TextField>类的字段),然后将创建的对象放入此集合中.然后如果你需要它们,你可以轻松地从集合中获取它们.

一些侧面建议:

  • 为什么AWT组件而不是Swing?换句话说,使用an ArrayList<JTextField>并用JTextFields填充它,而不是TextFields.
  • 避免setBounds(...)null布局,因为这使得非常不灵活的GUI,虽然它们在一个平台上看起来很好,但在大多数其他平台或屏幕分辨率上看起来很糟糕,并且很难更新和维护.

  • 避免使用"魔术"数字,例如硬编码数字: field.setBound(10,sum,107,22);

  • 请改用布局管理器.
  • 您将需要学习和使用Java命名约定.变量名都应以较低的字母开头,而类名以大写字母开头.学习这一点并遵循这一点将使我们能够更好地理解您的代码,并使您能够更好地理解其他代码.