윈도우창 닫을 때
WindowListener
windowClossing(); 구현!
프레임에add 시켜줘야한다.
(컴퓨터가 인식하려면 직접 입력)
다형성!
상위객체로 하위클래스객체를 지시할 수 있다.
하위클래스에서 재정의한 메소드를 사용함
재정의 안했다면 상위 것을 그대로 사용.
하위객체에서 추가로 정의한 것은 사용하지 못한다.
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
class Data
{
public String name=null;
public int com=0;
public int kor=0;
public int eng=0;
public int getSum()
{
return com+kor+eng;
}
public double getAvg()
{
return (com+kor+eng)/3.0;
}
}
public class Exam0903 extends Frame implements ActionListener //구현
{
Vector list;
int count=0; //벡터의 인덱스값을 나타냄
TextField tfName;
TextField tfCom;
TextField tfKor;
TextField tfEng;
TextField tfSum;
TextField tfAvg;
Button b1;
Button b2;
public Exam0903()
{
super("성적 조회");
list=new Vector();
//벡터에 파일읽어온 Data객체 저장
try{
BufferedReader br= new BufferedReader(new FileReader("C:\\java\\score.txt"));
String str=null;
while((str=br.readLine())!=null)
{
Data data=new Data();
String[] save = str.split("\\s");
data.name=save[0];
data.com=Integer.parseInt(save[1]);
data.kor=Integer.parseInt(save[2]);
data.eng=Integer.parseInt(save[3]);
list.add(data);
}
br.close();
}catch(IOException ioe){ioe.printStackTrace();}
Panel p1=new Panel();
b1=new Button("이 전");
b2=new Button("다 음");
b1.addActionListener(this);
b2.addActionListener(this);
p1.add(b1);
p1.add(b2);
//6행 1열 Grid레이아웃의 각 행에 이름,컴퓨터...등의 각 패널 등록한다.
Panel p2=new Panel();
p2.setLayout(new GridLayout(6,1));
Label name=new Label("이 름");
Label com=new Label("컴퓨터");
Label kor=new Label("국 어");
Label eng=new Label("영 어");
Label sum=new Label("총 점");
Label avg=new Label("평 균");
tfName=new TextField(8);
tfCom=new TextField(8);
tfKor=new TextField(8);
tfEng=new TextField(8);
tfSum=new TextField(8);
tfAvg=new TextField(8);
Panel nameP =new Panel();
Panel comP =new Panel();
Panel korP =new Panel();
Panel engP =new Panel();
Panel sumP =new Panel();
Panel avgP =new Panel();
nameP.add(name);
nameP.add(tfName);
comP.add(com);
comP.add(tfCom);
korP.add(kor);
korP.add(tfKor);
engP.add(eng);
engP.add(tfEng);
sumP.add(sum);
sumP.add(tfSum);
avgP.add(avg);
avgP.add(tfAvg);
p2.add(nameP);
p2.add(comP);
p2.add(korP);
p2.add(engP);
p2.add(sumP);
p2.add(avgP);
//맨 처음 보여줄 텍스트 내용
b1.setEnabled(false);
Data data=(Data)list.get(count);
tfName.setText(data.name);
tfCom.setText(data.com+"");
tfKor.setText(data.kor+"");
tfEng.setText(data.eng+"");
tfSum.setText(data.getSum()+"");
tfAvg.setText(Math.round(data.getAvg())+"");
this.add(p1,BorderLayout.NORTH);
this.add(p2);
this.setSize(200,400);
this.setLocation(450,250);
this.setVisible(true);
}
public static void main(String args[])
{
new Exam0903();
}
public void actionPerformed(ActionEvent ae) //이벤트 처리
{
if(ae.getSource()==b1) //"이전" 버튼 눌렀을 경우
{
count--;
b2.setEnabled(true);
Data data=(Data)list.get(count);
tfName.setText(data.name);
tfCom.setText(data.com+"");
tfKor.setText(data.kor+"");
tfEng.setText(data.eng+"");
tfSum.setText(data.getSum()+"");
tfAvg.setText(Math.round(data.getAvg())+"");
if(count==0) //count가 0일때 "이전"버튼을 동작중지
{
b1.setEnabled(false);
}
}
else if(ae.getSource()==b2) //"다음" 버튼눌렀을 경우
{
count++;
b1.setEnabled(true);
Data data=(Data)list.get(count);
tfName.setText(data.name);
tfCom.setText(data.com+"");
tfKor.setText(data.kor+"");
tfEng.setText(data.eng+"");
tfSum.setText(data.getSum()+"");
tfAvg.setText(Math.round(data.getAvg())+"");
if(count==(list.size()-1)) //count가 마지막 인덱스 번호일때 "다음" 버튼 동작중지
{
b2.setEnabled(false);
}
}
}
}
중간프로젝트발표자료 작성요령
문석환김연식.HWP