java - 将文本字段值放入数组中,ArrayIndexOutOfBoundsException

标签 java arrays jtextfield

我有两个名为 field1 和 field2 的 JTextField,目标是输入名称,当我按回车键时,将这些值存储在 nameArray[] 中的位置 0 和 1 处。

我不确定原因是我的 Action 监听器的逻辑还是我声明数组的方式。如果是其中任何一个......

数组的声明方式如下,就在我的类声明下方:

public class TwoPlayer{
private String[] nameArray = {};

这是我的 Action 监听器和 field1 初始化:

JTextField field1 = new JTextField("Left name");
    field1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String lValue = field1.getText();
    String leftValue = String.valueOf(lValue);
    nameArray[0] = (leftValue);
    }
  });  

字段2:

JTextField field2 = new JTextField("Right name");   
    field2.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    String rValue = field2.getText();
    String rightValue = String.valueOf(rValue);
    nameArray[1] = (rightValue);
    }
  }); 

强制堆栈:

线程“AWT-EventQueue-0”中出现异常 java.lang.ArrayIndexOutOfBoundsException: 0 在测试.TwoPlayer$1.actionPerformed(TwoPlayer.java:37) 在 javax.swing.JTextField.fireActionPerformed(JTextField.java:508) 在 javax.swing.JTextField.postActionEvent(JTextField.java:721) 在 javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:836) 在 javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1663) 在javax.swing.JComponent.processKeyBinding(JComponent.java:2882) 在javax.swing.JComponent.processKeyBindings(JComponent.java:2929) 在 javax.swing.JComponent.processKeyEvent(JComponent.java:2845) 在 java.awt.Component.processEvent(Component.java:6312) 在 java.awt.Container.processEvent(Container.java:2236) 在java.awt.Component.dispatchEventImpl(Component.java:4891) 在 java.awt.Container.dispatchEventImpl(Container.java:2294) 在 java.awt.Component.dispatchEvent(Component.java:4713) 在java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954) 在java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806) 在java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074) 在 java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945) 在java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771) 在 java.awt.Component.dispatchEventImpl(Component.java:4762) 在 java.awt.Container.dispatchEventImpl(Container.java:2294) 在 java.awt.Window.dispatchEventImpl(Window.java:2750) 在 java.awt.Component.dispatchEvent(Component.java:4713) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 在java.awt.EventQueue.access$500(EventQueue.java:97) 在 java.awt.EventQueue$3.run(EventQueue.java:709) 在 java.awt.EventQueue$3.run(EventQueue.java:703) 在 java.security.AccessController.doPrivileged( native 方法) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 在 java.awt.EventQueue$4.run(EventQueue.java:731) 在 java.awt.EventQueue$4.run(EventQueue.java:729) 在 java.security.AccessController.doPrivileged( native 方法) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 在java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

最佳答案

这是初始化数组的方式。您目前有private String[] nameArray = {};这会创建一个新的 String[]长度为 0 并解释 IndexOutOfBoundsException .

您想要的是 private String[] nameArray = new String[2];它初始化 String[]将容纳两个字符串。

关于java - 将文本字段值放入数组中,ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35664740/

相关文章:

c# - 如何使用 C# 从数据库中读取数组字段?

java - Java applet 中的 MPI.Init 问题。

java - ZipEntry 的路径名称的文件分隔符?

c++ - 如何初始化未知大小的多维 vector ,C++

python - 通过分布项乘以 Numpy 数组

java - 按 Enter 键将移动到下一个文本字段,例如 Tab 键?

java - 扫描 jTextArea 中的单词

java - 将多个面板和事件添加到 GUI

java - 如何在 Hazelcast 中完成分区

java - LibGDX/Java 奇怪的行为