컴퓨터프로그래밍/JAVA

Java - 30.AWT기반 이벤트 핸들링

zelkova 2011. 7. 20. 16:04

AWT 이밴트 핸들링 이란?
이밴트 핸들링은 GUI프로그램에서 발생한 이벤트를 처리하는과정 전체를 지칭하는 말이다. Java를 포함하여 모든 이벤트 핸들링은 다음 단계별 점검 사항을 결정해야 한다. Java SE에서는 AWT 기반 이벤트 핸들링과  SWING 기반 이벤트 핸들링이 존재한다. 여기에서는 AWT기반 이벤트 기반 핸들링에 대해 알아보자.

이벤트 소스에서 발생한 이벤트는 이벤트 리스너로 보내져 어떤 이벤트인지 분석 한뒤 해당 이벤트를 호출한다. 또한 이벤트 핸들러에서 발생한 이벤트 처리를 위해 이벤트 핸들러의 매개인자로 이벤트가 넘겨짐도 확인할 수 있다.
※모든 이벤트소스가 모든 이벤트를 핸들링할 수 있는 것은 아니다. 따라서 컴포넌트 별로 처리할 수 있는 이벤트를 파악하고 있어야 한다.


a단계 1. 어떤 이벤트 소스(GUI컴포넌트)들을 화면에 배치할지 정한다.
단계 2. 화면에 배치한 이벤트 소스 중 어떤 이벤트 소스(들)가 어떤 이벤트를 발생해야 하는가?
단계 3. 해당 이벤트 소스가 발생한 이벤트를 처리하기 위해 어떤 이벤트 리스너(대부분 라이브러리)를 사용할지 정한다.
단계 4.이벤트 리스너에 포함되어 실제 이벤트 처리를 수행할 이벤트 핸들러(메서드)에는 어떤 코드가 들어가야 할까?

AWT 기반 이벤트 핸들링과의 연관 관계
 이벤트 이벤트 리스너  이벤트 핸들러  이벤트 소스 
 ActionEvent ActionListener  void actionPerformed(Action Event)  Frame, Button, Checkbox, Choice, List, TextField, TextArea 
 MouseEvent  MouseAdapter or MouseListener  void mouse Clicked(MouseEvent)  Frame,Button,Checkbox, Choice, List, TextField, TextArea
  void mouseEntered(MouseEvent)
 void mouseExited(MouseEvent)
 void mousePressed(MouseEvent)
 void mouseReleased(MouseEvent)
 KeyEvent  KeyAdapter or KeyListene void keyPressed(KeyEvent)   TextField, TextArea
 void keyReleased(KeyEvent)
 void keyType(KeyEvent)
 ItemEvent   ItemListener  void itemStateChange(Item Event)  Choice, List
 TextEvent  TextListener  void textValueChanged(TextEvent)  TextField, TextArea
 Window Event  WindowAdapter or WindowListener  void windowClosing(windowEvent)  Frame, Dialog
 void windowOpened(windowEvent)
 void windowActivated(windowEvent)
 void windowDeactivated(windowEvent)
 void windowDeactivated(windowEvent)
 void windowIconified(windowEvent)
 void windowDeiconified(windowEvent)

예제)

-포인트 소스
  EventListener eventListener = new EventListener(this);
  this.inputTextField.addKeyListener(eventListener);
  this.inputButton.addActionListener(eventListener);
  this.inputList.addItemListener(eventListener);
  this.addWindowListener(eventListener);

 public void keyPressed(KeyEvent ke) {
  System.out.println("TextField에서 KeyEvent가 발생했군요");
  int keyCode = ke.getKeyCode();
  if(keyCode == KeyEvent.VK_ENTER) {
   this.eventSource.inputList.add(this.eventSource.inputTextField.getText());
  } 
 }
 
 public void actionPerformed(ActionEvent ae) {
  System.out.println("Button에서ActionEvent가 발생했군요");
  this.eventSource.inputList.add(this.eventSource.inputTextField.getText());
 }
 
 public void itemStateChanged(ItemEvent ie) {
  System.out.println("List에서 ItemEvent가 발생했군요");
  if(ie.getStateChange() == ItemEvent.SELECTED) {
   System.out.println(ie.getItem() + "번째 아이템을 선택하셨습니다.");
  }
 }
 
 public void windowOpened(WindowEvent we) {
  System.out.println("Frame이 열렸군요");
 }
 
 public void windowClosing(WindowEvent we) {
  System.out.println("Frame이 닫히고 있군요");
  this.eventSource.dispose();

반응형

'컴퓨터프로그래밍 > JAVA' 카테고리의 다른 글

Java - 32.GridLayout  (0) 2011.07.31
Java - 31.BorderLayout  (0) 2011.07.29
Java - 29.Menu, Popup 컴포넌트  (0) 2011.07.20
Java - 28.List, TextArea 컴포넌트  (0) 2011.07.20
Java - 27.Checkbox,Choice컴포넌트  (0) 2011.07.19