선택장애

자바(JAVA) - Inner class를 이용한 입력, Clear, Exit 본문

자바(JAVA)

자바(JAVA) - Inner class를 이용한 입력, Clear, Exit

yes or yes 2017. 8. 14. 13:44
반응형

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")) {  //값이 똑같다면 끝내라
         Syste
m.exit(0);     //종료
      }
   }
   public static void main(String[] args) {
      new AdapterEx();      //객체생성
      
   }
   class KeyEventHandler extends KeyAdapter { //KeyAdapter를 상속받는 KeyEventHandler클래스를 생성
    
    public void keyTyped(Ke
yEvent 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) {   //매개변수를 클로징이벤트로 받고
       Syste
m.exit(0);         //종료
    }
 }
}

 

 

 

 
 

 

반응형