【问题标题】:How do I get the values of a dynamically created textfield如何获取动态创建的文本字段的值
【发布时间】:2015-12-21 22:33:00
【问题描述】:

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

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;
       }
   }
});

但我无法编写任何成功的代码来获取文本字段的值。

【问题讨论】:

    标签: java arrays swing arraylist


    【解决方案1】:

    您的问题是对引用的访问——这意味着,一旦您创建了对象,您就无法在需要时获得对它的体面的引用。一种解决方案是使用诸如ArrayList&lt;TextField&gt; 之类的集合作为类的字段,然后将创建的对象放入该集合中。以后如果您需要它们,您可以轻松地从集合中获取它们。

    一点建议:

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

    • 避免使用“神奇”数字,例如此处的硬编码数字:field.setBound(10,sum,107,22);

    • 改用布局管理器。
    • 你会想要学习和使用Java naming conventions。变量名应全部以小写字母开头,而类名应以大写字母开头。学习并遵循这一点将使我们能够更好地理解您的代码,并使您能够更好地理解他人的代码。

    【讨论】:

    • 非常感谢,非常感谢您的回复
    • 我发布的代码有错误。应该是 panel.add(field); for(int i=0; i 也是如此
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    相关资源
    最近更新 更多