gpt4 book ai didi

java - 读取 ArrayList JTextFields

转载 作者:行者123 更新时间:2023-12-02 06:43:53 26 4
gpt4 key购买 nike

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

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

最佳答案

创建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 版本支持它们的话)。

关于java - 读取 ArrayList JTextFields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18854842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com