package Day2; import java.awt.Button; import java.awt.Frame; import java.awt.Panel; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class AdapterEx extends Frame implements ActionListener { Panel p1, p2, p3; //패널을 세개 생성 TextField tf; //텍스트 필드 생성 TextArea ta; //밑의 텍스트지역 생성 Button b1, b2; //입력 버튼 두개 선언 public AdapterEx() { super("Adapter 테스트"); //프레임 출력
p1 = new Panel(); //p1 객체 생성 및 초기화 p2 = new Panel(); //p2 객체 생성 및 초기화 p3 = new Panel(); //p3 객체 생성 및 초기화 tf = new TextField(35); //텍스트 입력 박스 크기 조절 ta = new TextArea(10, 35); //텍스트 지역 박스 크기 조절 b1 = new Button("Clear"); //버튼생성 및 Clear입력 b2 = new Button("Exit"); //버튼생성 및 Exit입력 p1.add(tf); //tf를 p1에 추가 p2.add(ta); //ta를 p2에 추가 p3.add(b1); //b1을 p3에 추가 p3.add(b2); //b2를 p3에 추가 add("North", p1); //p1은 북쪽에 출력 add("Center", p2); //p2는 가운데에 출력 add("South", p3); //p3은 서쪽에 출력 setBounds(300, 200, 300, 300); //창이 뜨는 위치, 창의 크기 조절 setVisible(true); //출력 // 내부 리스너 연결 b1.addActionListener(this); //텍스트를 쓰고 clear 버튼을 눌러야 실행 되도록하는 매개채 b2.addActionListener(this); //텍스트를 쓰고 Exit 버튼을 눌러야 실행 되도록하는 매개채 // 외부 리스너 연결 tf.addKeyListener(new KeyEventHandler()); // addWindowListener(new WindowEventHandler()); // } // 액션이벤트 핸들러 public void actionPerformed(ActionEvent e) { //매개변수를 액션이벤트로 받고 String str = e.getActionCommand(); //ActionEvent안의 메소드 getActionCommad를 불러서 str에 넣는다. if (str.equals("Clear")) { //클리어 버튼이 눌러진다면 ta.setText(""); //싹 지워지고 공백이 들어감 tf.setText(""); tf.requestFocus(); //커서 깜빡깜빡
} else if (str.equals("Exit")) { //값이 똑같다면 끝내라 System.exit(0); //종료 } } public static void main(String[] args) { new AdapterEx(); //객체생성
} class KeyEventHandler extends KeyAdapter { //KeyAdapter를 상속받는 KeyEventHandler클래스를 생성
public void keyTyped(KeyEvent e) { //매개변수를 KeyTyped로 받고 if (e.getKeyChar() == KeyEvent.VK_ENTER) { //Enter키를 누르면 발생하는 이벤트 ta.append(tf.getText() + "\n"); //get 이자나 텍스트 값을 가져 온 tf.setText(""); //텍스트 필드 초기화 } } } class WindowEventHandler extends WindowAdapter { //WindowAdapter를 상속 받는 WindowEnventHandler 클래스 생성 public void windowClosing(WindowEvent e) { //매개변수를 클로징이벤트로 받고 System.exit(0); //종료 } } }