这么长的程序难道要我们从头看到尾?printStackTrace();

解决方案 »

  1.   

    以下是我修改以后的程序,不过没有完全给你改好,现在可以运行,但你的Layout写的也实在很乱//去掉Statics tjwin;
    //    tjwin = new Statics();
    //两行可运行。
    import java.awt.*;
    import java.awt.event.*;class Cwindow extends Frame implements ActionListener{

    Statics tjwin;
    Panel north_p,center_p,south_p;
    Label kskm,ksrs,xhlab,xmlab,cjlab,lab;
    Button qr,qd,qx;
    TextField txt1,txt2;
    TextField xh[] = new TextField[50];
    TextField xm[] = new TextField[50];
    TextField cj[] = new TextField[50];

    Cwindow(){

    super("学生成绩登记窗口");
    setSize(400,350);
    setVisible(true);

    tjwin = new Statics();

    north_p = new Panel();
    center_p = new Panel();
    south_p = new Panel();

    qr = new Button("确认");
    qd = new Button("确定");
    qx = new Button("取消");

    qr.addActionListener(this);
    qd.addActionListener(this);
    qx.addActionListener(this);

    kskm = new Label("考试科目");
    ksrs = new Label("考试人数(不超过50)");
    xhlab = new Label("学号",Label.CENTER);
    xmlab = new Label("姓名",Label.CENTER);
    cjlab = new Label("成绩",Label.CENTER);
    lab = new Label("每行都必须输入成绩");

    txt1 = new TextField(10);
    txt2 = new TextField(4);

    for (int i=0;i<50;i++){
    xh[i] = new TextField(Integer.toString(i+1));
    xh[i].setEnabled(false);
    xm[i] = new TextField("姓名");
    cj[i] = new TextField("0");
    }

    //north_p.setLayout(new GridLayout(1,5));
    north_p.add(kskm);
    north_p.add(txt1);
    north_p.add(ksrs);
    north_p.add(txt2);
    north_p.add(qr);

         //south_p.setLayout(new GridLayout(1,3));
    south_p.add(lab);
    south_p.add(qd);
    south_p.add(qx);

    center_p.setLayout(new GridLayout(51,3));
    center_p.add(xhlab);
    center_p.add(xmlab);
    center_p.add(cjlab);
    for (int i=0;i<50;i++){
    center_p.add(xh[i]);
    center_p.add(xm[i]);
    center_p.add(cj[i]);
    }

    ScrollPane sp = new ScrollPane();
    sp.add(center_p);

    add(north_p,"North");
    add(sp,"Center");
    add(south_p,"South");

    south_p.setVisible(false);
    center_p.setVisible(false);

    addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    });

    }

    public void actionPerformed(ActionEvent e){
    if (e.getSource()==qr){
    if (Integer.parseInt(txt2.getText())<=50){
    center_p.setVisible(true);
    south_p.setVisible(true);
    pack();
    }
    for (int i=0;i<Integer.parseInt(txt2.getText());i++){
    xh[i].setBackground(Color.pink); 
    xm[i].setBackground(Color.pink);
    cj[i].setBackground(Color.pink);
    xh[i].setEnabled(true);
    //repaint();
    }

    for (int i=Integer.parseInt(txt2.getText());i<50;i++){
    xm[i].setEnabled(false);
    cj[i].setEnabled(false);
    }
    }
    if (e.getSource()==qd){

    tjwin.setVisible(true);

    }
    if (e.getSource()==qx){
    for (int i=0;i<50;i++){
    xh[i].setText(""+(i+1));
    xm[i].setText(null);
    cj[i].setText("0");
    }
    }
    }

    }class Statics extends Frame{
    Label lab[] = new Label[6]; TextField tj[] = new TextField[6];
    Statics(){
    super("成绩统计结果表");

    for (int i=0 ;i<6 ;i++ )
    {
    tj[i] = new TextField(10);
    }

    setLayout(new GridLayout(2,6));
    lab[0] = new Label("考试人数");
    lab[1] = new Label("优秀人数");
    lab[2] = new Label("良好人数");
    lab[3] = new Label("及格人数");
    lab[4] = new Label("不及格人数");
    lab[5] = new Label("平均分数");
    for (int i=0;i<6;i++)
    {
    System.out.println(i);     add(lab[i]);
        if (i>=3){
         add(tj[i]);
        }
    }
    setVisible(false);
    addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    });
    }
    }
    public class Ex153{
    public static void main(String args[]){
    Cwindow fr = new Cwindow();
    //fr.setSize(300,200);
    fr.pack();
    fr.show();

    }
    }
      

  2.   

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
            at Statics.<init>(Ex153.java:140)
            at Cwindow.<init>(Ex153.java:21)
            at Ex153.main(Ex153.java:161)
      

  3.   

    没看懂其实你上面主要的错误在于Static类中
    1、数组下标越界
    2、TextField 数组tj[]没有初始化建议,你还需要好好的看一下LayoutManager()
      

  4.   

    weimenren(一起玩吧):thank you