java - 打印 JTextField 中的数组项

标签 java swing jtextfield indexoutofboundsexception

我有一个java swing应用程序。我的目的是将数组的元素打印到 JTextField

但是当我按下 jbutton 时,我收到以下异常

线程“AWT-EventQueue-0”中的异常 java.lang.ArrayIndexOutOfBoundsException:3

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;



public class Main extends JFrame  implements ActionListener   {

    /**
     * @param args the command line arguments
     */

    JTextField jtext;
    JPanel panel;




    public Main()
    {

    jtext = new JTextField("                                   " );
    Container pane = getContentPane();
JButton b =new JButton("Click Me");
     panel = new JPanel();


     panel.add(jtext);
     panel.add(b);

     b.addActionListener(this);
     pane.add(panel);
    }

 public void actionPerformed(ActionEvent e)

    {
          String[] strArray = new String[] {"John", "Mary", "Bob"};
int j;
       for( j=0;j< strArray.length;j++)
  {

  }

  jtext.setText(strArray[j]);
}

    public static void main(String[] args) {
        // TODO code application logic here
       Main m = new Main();
       m.setVisible(true);

    }

}

最佳答案

您正在运行循环而不执行任何操作。当你最终退出循环时,j 确实会变成 3,因为它不匹配 j 小于 strArray.length 条件。但由于 Java 中的数组是基于 0 的,因此您正在尝试获取三元素数组的第四个元素。

以下代码应该可以解决您的问题。放置它而不是 for 循环。

StringBuilder sb=new StringBuilder();
for(int j=0;j< strArray.length;j++)
{
   sb.append(strArray[j]);
}
jtext.setText(sb.toString());

关于java - 打印 JTextField 中的数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15383750/

相关文章:

java - 在 for 循环开始时清空 List<String>

java - 如何从容器中删除死线程

java - 将 2d double 组转换为 2d double 组列表

java - 尝试将 sql 数据库中的信息显示到 html 表中

java - 如何在非事件派发线程中间提示确认对话框

java - 移动 Java Swing 矩形会留下矩形

java - 在全屏独占模式下在 JtextField 中键入问题

java - 格式化 JGraphX 边

java - JTextField 不随 Thread.sleep() 更新

java - 设置可输入 JFormattedTextField 的最大值