我写了以下代码,可在运行时,有 java.lang.ArrayIndexOutOfBoundsException异常。请高手帮俺看看吧。不胜感激!!import java.awt.Event;
import java.awt.Frame;
import java.awt.event.ActionEvent;import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
public class TransTool extends JFrame {
public TransTool(){
setTitle("TransTool");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

initMenu();

tabbedPane = new JTabbedPane(JTabbedPane.SCROLL_TAB_LAYOUT);
add(tabbedPane);

setExtendedState( Frame.MAXIMIZED_BOTH );
setVisible(true);
}
/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
new TransTool();
}
void initMenu(){
setJMenuBar(menuBar);

fileMenu = new JMenu("File");
menuBar.add(fileMenu);

newAction = new FileAction ("New",KeyStroke.getKeyStroke('N', Event.CTRL_MASK ));

newItem = fileMenu.add(newAction);

}

class FileAction extends AbstractAction{
FileAction(String name){
super(name);
}
FileAction(String name, KeyStroke keystroke) {
      this(name);
      if(keystroke != null)
        putValue(ACCELERATOR_KEY, keystroke);
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()== newItem){
newFile();
}
}

}

void newFile(){
tabbedPane.addTab("new"+String.valueOf(index+1),textArea[index]) ;
index++;
}

JMenuBar menuBar = new JMenuBar();
JMenu fileMenu,editMenu;
FileAction newAction;
JMenuItem newItem;
JTabbedPane tabbedPane;
JTextArea[] textArea = new JTextArea[10];
int index = 0;}

解决方案 »

  1.   

    add(tabbedPane)改为this.getContentPane().add(tabbedPane);
      

  2.   

    JTextArea[] textArea = new JTextArea[10];
    这句话的意思是:声明textArea是一个有10个元素的JTextArea数组,但是元素并没有被赋值,故出错。
      

  3.   

    我现在弄好了,在tabbedPane.addTab("new"+String.valueOf(index+1),textArea[index]) ; 前加一句textArea[tabIndex] = new JTextArea();可为什么要加呢??本来不是就有这个方面的声明与定义了吗???这应该说是涉及到数组的应用吧,我有时间了可得把这个问题弄清楚
      

  4.   

    JTextArea[] textArea = new JTextArea[10];这样是创建并初始化textArea 数组,可里面的每个textArea[tabIndex] 都是null,你可以打印出来看看,所以还要对每个值再赋值