我有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);
}
}
答案 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);