Java 打印JTextField中的数组项

Java 打印JTextField中的数组项,java,swing,jtextfield,indexoutofboundsexception,Java,Swing,Jtextfield,Indexoutofboundsexception,我有一个java swing的应用程序。我的目的是将数组的元素打印到JTextField中 但是当我按下一个jbutton来做这件事时,我得到了以下异常 线程“AWT-EventQueue-0”java.lang.ArrayIndexOutofBounds异常:3 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Main extends JFrame implements Act

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

但是当我按下一个jbutton来做这件事时,我得到了以下异常

线程“AWT-EventQueue-0”java.lang.ArrayIndexOutofBounds异常: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);

    }

}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
公共类Main扩展JFrame实现ActionListener{
/**
*@param指定命令行参数
*/
jtext字段jtext;
JPanel小组;
公用干管()
{
jtext=新的JTextField(“”);
容器窗格=getContentPane();
JButton b=新JButton(“单击我”);
panel=新的JPanel();
panel.add(jtext);
小组委员会.添加(b);
b、 addActionListener(此);
窗格。添加(面板);
}
已执行的公共无效操作(操作事件e)
{
String[]strArray=新字符串[]{“John”、“Mary”、“Bob”};
int j;
对于(j=0;j
您在循环中运行,什么也不做。当您最终退出循环时,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());
StringBuilder sb=新建StringBuilder();
对于(int j=0;j
将代码改写为:

String valueToBeInserted="";

for( j=0;j< strArray.length;j++)
 {
   valueToBeInserted=valueToBeInserted + " " + strArray[j];
 }

 jtext.setText(valueToBeInserted);
字符串值tobeinserted=“”;
对于(j=0;j
请使用StringBuilder进行此操作。你这样做的效率要低得多。