1. Java의 Event

곰주·2022년 10월 10일
1
post-thumbnail

안녕하세요... 이번에는 JAVA를 데리고 왔습니다...

목차

  • AWT
  • Swing
  • Event와 Event Handler
  • 1. AWT(Abstract Windows Toolkit)

    AWT란 GUI를 구축하기 위한 클래스의 모음이다. 종류로는 사용자 Interface클래스와 그래픽 처리 클래스가 있다. GUI 프로그래밍(윈도우 프로그래밍)을 위한 도구로, Java로 구현하지 않고 운영체제의 컴포넌트를 그대로 사용하는 것이다. 이러한 특징을 보았을 때, 운영체제에 종속적인 것을 알 수 있다!

    AWT의 클래스 구조

    Component

  • Window 환경의 Component (Button, CheckBox, ...)
  • java.awt 클래스로 객체 모델링
  • 즉, AWT 관련 패키지는 모두 java.awt로 시작하고, AWT Component의 최상위 조상은 java.awt.Component 클래스이다. (메뉴 관련 컴포넌트를 제외하고!!)

    Method

    Method 기능
    Public Dimension getSize() Component 현재의 크기를 Dimesion 클래스 객체로 반환
    Public void setForeground(Color c) Text 색 결정
    Public void setBackground(Color c) Text 외의 색 결정
    Public void setFont(Font f) Font 설정
    Public void setEnalbed(boolean b) false: inactive status
    void setBounds(int x, int y, int width, int height) Component 위치 지정
    void setSize(Diemesion d) Component 크기 지정
    coid setVisible(boolean b) true: 화면에 출력, false: 화면에서 사라짐

    Visual Component와 Container 관계

    (1) Component 생성
    (2) 컨테이너 Layout
    (3) EventHandler 작성

    Component

    Component 기능
    Label 고정 문자열 표시
    Buttton 버튼
    TextField 1 line 문자열 입력
    TextArea 여러 line 문자열 입력
    CheckBox 체크박스, 옵션 버튼을 작성
    Choice Drop-Down 리스트를 작성
    Canvas 그리기 공간 작성
    List 리스트 작성
    Scrollbar 스크롤바 작성

    2. Swing

    Swing이란 순수한 자바 언어로 지원되는 GUI 개발 도구이다. Swing은 플랫폼에 독립적이고 (AWT는 종속적!!), 새로운 Component 제작이 쉽다. 또, ToolTip 기능을 제공하며 AWT Component를 지원한다. AWT를 확장한 GUI 프로그래밍 도구로써 AWT보다 더 많은 종류의 컴포넌트를 제공한다.

    Swing의 Class 구조

    java.lang.Object -> java.lang.Component -> java.awt.Container -> javax.swing.jComponent


    3. Event와 Event Handler

    Event란 사용자 혹은 프로그램에 의해 발생할 수 있는 하나의 사건이라고 정의된다.

    Event 처리 과정

    1. Component
    2. 확인 버튼 클릭 이벤트 발생
    3. EventHandler

    Event 구성

    Event Source Event를 발생시키는 Button, Scrollbar, Mouse, Keyboard, ... 등의 Component
    Event Class 특정 Component에 따라 발생하는 Event를 분류한 것을 의미
    Event Handler Event 처리를 위한 클래스

    Event Class 구조도

    Event Class Comment
    ActionEvent Component가 활성화될 때 발생
    AdjustmentEvent 스크롤바와 같이 조정 가능한 Component에서 조정이 있을 때 발생
    ContainerEvent Container에 Component가 추가 및 삭제되는 경우 발생
    FocusEvent Component에 focus가 들어왔을 때 발생
    ItemEvent List, Choice, ... 등의 Component에 선택 항목이 선택될 때 발생
    KeyEvent 키보드 입력에 의해서 발생
    MouseEvent 마우스 움직임에 의해서 발생
    PaintEvent Component가 그려져야 할 때 발생
    TextEvent Text Component의 내용이 변화할 때 발생
    WindowEvent Window 활성화, 또는 종료할 때 발생

    Evnet Handler 구성

    Listener Interface

    각 Evnet를 처리하기 위해 준비된 method를 선언한 Interface. (Event + Listener)

    cf.
    Event Source (이벤트 발생지) : 이벤트가 발생한 컴포넌트
    Event Handler (이벤트 처리기) : 이벤트 발생 시 실행될 코드를 구현
    Event Listener (이벤트 감지기) : 이벤트를 감지하고

    예제

    class MyActionListener implemnets ActionListener
    {
    	public void actionPerformed(ActionEvent ae)
        {
        	System.out.println("Action Event가 발생했습니다.");
    	}
    }      

    예제 - EventHandler

    확인 버튼 클릭 시 Label이 보이도록 하는 프로그램

    소스코드는 MainFrame과 Button Handler부분만 작성함!
    Source

    /**
    *
    * @author hansohee
    */
    public class MainFrame extends javax.swing.JFrame {
    
      public MainFrame() {
          initComponents();  // jLabel과 jButton이 생성되는 메서드
          jLabel1.setVisible(false);  // 프로그램 실행 시 Label이 안 보이도록 설정.
      }            
    
      private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
          // TODO add your handling code here:
          // jLabel1.setText("확인(OK) BUtton Click");  // 버튼 클릭하면 Label이름 변경
          jLabel1.setText("Inha Technical Colleg![](https://velog.velcdn.com/images/haansohee/post/e812fc2d-d626-4ad9-a3a3-a76511e9f401/image.JPG)
    e 202144020 한소희");
          jLabel1.setVisible(true);
      }               
    }

    Design

    실행 결과

    profile
    아기코쟁이 🧑🏻‍💻

    0개의 댓글