在JTextField中打印数组项

时间:2013-03-13 11:16:29

标签: 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);

    }

}

2 个答案:

答案 0 :(得分:1)

你正在循环而没有做任何事情。当你最终离开循环时,j确实会变为3,因为它不匹配j小于strArray.length条件。但由于Arrays基于java,所以你试图获得三元素数组的第四个元素。

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

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

答案 1 :(得分:0)

将代码重写为:

String valueToBeInserted="";

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

 jtext.setText(valueToBeInserted);