【问题标题】:reading ArrayList JTextFields读取 ArrayList JTextFields
【发布时间】:2013-09-22 04:28:22
【问题描述】:

我的程序首先提示用户他们想要多少个文本字段

public class textEvent1 implements ActionListener {    //action listener for "how many masses?"
            public void actionPerformed (ActionEvent e) {
                n = (int)(Double.parseDouble(massNumField.getText())); 

接下来我创建一个 for 循环来创建标签和文本字段(我已经为其创建了列表,因为我不知道会有多少)。有几个列表,但我只举一个例子。

ArrayList masses = new ArrayList();

    for(int i=1; i<=n; i++) {                                  //adds text event 2 text to the screen
                        massLabel = new JLabel("How much mass does Mass " +i+ " have? ");
                        massField = new JTextField(5);
                        masses.add(massField);

现在,当我尝试将质量列表中的一个元素分配给这样的变量时,我的问题似乎出现了。

for(int i=1; i<=n; i++) {
                        mass =  Double.parseDouble(((JTextComponent) masses.get(i)).getText());

我已经尝试了几件事...mass = mass.get(i).....mass = mass.get(i).getText()) 等等等等。我要么不断收到诸如空指针异常之类的错误,要么说我无法解析双对象。

此示例出现的错误如下

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 >= 3
    at java.util.Vector.elementAt(Unknown Source)
    at acmx.export.java.util.ArrayList.get(ArrayList.java:54)
    at Orbit$textEvent2.actionPerformed(Orbit.java:151)

第 151 行是

mass =  Double.parseDouble(((JTextComponent) masses.get(i)).getText());

【问题讨论】:

  • 您能否编辑您的问题以包括您如何创建和设置masses 变量?我怀疑这可能是问题所在。 (点击问题左下角的edit 按钮)
  • “任何建议都会非常有用。”我建议你问一个问题.. 另外:1)为了尽快获得更好的帮助,请发布SSCCE。 2) 始终复制/粘贴错误和异常输出。

标签: java swing arraylist jtextfield


【解决方案1】:

创建JTextFields 时,您可以:

for(int i=1; i<=n; i++) {
    ...

请注意,List 索引从 0 开始,因此当您使用类似循环检索项目时,使用 i 作为索引,您试图访问最后一个项目之后的一个。将阅读循环索引更改为:

for (int i = 0; i < n; i++) {
    ...

或者您可以使用增强 for 循环,除非您需要使用古老的 java 版本:

for (Object massField : masses) {
    mass =  Double.parseDouble(((JTextComponent) massField).getText());
    ...

(那么你也应该使用泛型,如果 java 版本支持的话)。

【讨论】:

  • 顺便说一句,不使用ArrayList&lt;JTextField&gt; 有什么特别的原因吗?这将节省演员表并有利于类型安全。
  • 是的,我试过了,但出于某种奇怪的原因,它没有接受它。它提出了一个警告说“类型 ArrayList 不是通用的;它不能用参数参数化
  • @DavidJarrin 看起来您导入了错误的ArrayList。应该是java.util.ArrayList
猜你喜欢
  • 1970-01-01
  • 2013-12-11
  • 2015-01-31
  • 2014-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
相关资源
最近更新 更多