私のプログラムは、ユーザーがいくつのテキストフィールドを持ちたいかを尋ねることから始まります
public class textEvent1 implements ActionListener { //action listener for "how many masses?"
public void actionPerformed (ActionEvent e) {
n = (int)(Double.parseDouble(massNumField.getText()));
次に、for ループを作成して、ラベルとテキスト フィールドを作成します (ラベルとテキスト フィールドの数がわからないため、リストを作成しました)。いくつかのリストがありますが、1 つだけ例を挙げます。
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 = masses.get(i).....mass = masses.get(i).getText()) など。Null ポインター例外などのエラーが発生し続けるか、オブジェクトを parseDouble できないと言っています。
この例で発生するエラーは次のとおりです。
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());