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"); }
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();
} }
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)
// 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();
}
}
at Statics.<init>(Ex153.java:140)
at Cwindow.<init>(Ex153.java:21)
at Ex153.main(Ex153.java:161)
1、数组下标越界
2、TextField 数组tj[]没有初始化建议,你还需要好好的看一下LayoutManager()