자바(java) 기초 6편.

/*1. GUI ( Graphics User Interface )
 
 – 자바의 GUI 구현 2가지 방법
  가. AWT
   : 무겁다.
   : OS자원으로 화면구성.

  나. Swing
   : 가볍다.
   : 자체적인 자원으로 화면구성.

 – java.awt 패키지

 – 계층구조( 상속관계 )
 
                    Object
                       |
                    Component
   
       Container                일반 Component(Button, TextField, TextArea, CheckBox,…)
              ==> 반드시 Container에 얹혀서 보여진다.
           │       
     window Dialog
      │
   Frame  Panel(반드시 Frame에 얹혀서 보여진다.)
   
    ==> Layout 관련 클래스 : 컴포넌트의 위치 및 크기를 관리
     – BorderLayout(*)
      ==> Frame의 기본Layout
      ==> 5개의 구역으로 나눈다.
     – FlowLayout(*)
      ==> Panel의 기본Layout
     – CardLayout
         – GridBagLayout
         
  2. 이벤트(Event) 처리
   : 이벤트? ==> 특정 컴포넌트에서 발생하는 액션.(마우스클릭,…)
   : 이벤트 처리(event Handling)
    ==> 이벤트가 발생했을때 특정 동작을 수행시키는 구현
   : 구현 메커니즘
    버튼——–(클릭)——->hello 출력
    
    가. 이벤트 소스
     : 이벤트가 발생한 컴포넌트
     : 버튼 (Button b3)
    
    나. 리스너(Listener : 청취자) : 이벤트 발생여부 감시
     : 인터페이스로 제공
     : java.awt.event 패키지
     : 인터페이스를 구현하는 클래스 작성(이벤트 처리 담당 클래스)
      ==> 이벤트 핸들러(Event Handler)
      ==> 인터페이스의 추상메소드를 반드시 구현
      
    다. 연결
     : 이벤트 소스와 핸들러 연결
     : addXXXListener(이벤트 핸들러);
     
 * 이벤트 정보
  => e.getSource() : 위치값 비교
  => e.getActionCommand() : 이름 비교
     
     * 이벤트 처리하는 4가지 방법
     1. 화면구성클래스 + 다른 클래스로 구현
     2. 화면구성클래스(이벤트처리까지 구현)
     3. Inner 클래스 (중첩클래스)
      ==> outter 클래스의 멤버(변수,메소드)처럼 동작
      ==> outter 클래스를 먼저 생성하고 inner 사용가능하다.. (외부클래스)
      ==> outter 클래서의 private도 사용 가능하다.
      ==> 다른 클래스에서는 사용 안하고 특정 클래스만 사용할 때. (*)
      ==> static 키워드 가능(Inner 기능 포기)
       (outter 클래스 이름으로 접근 가능)
      
      class Outer{
       private int num;
       class Inner{
        num=3;
       }inner calss end
       static class Inner2{
        // 형태는 inner이나 outter와 별개로 동작하여
        // private int num에 접근 불가하다.
        // 접근 방법은 outer.inner2 처럼 접근한다.(외부에서 outter생성 안해도 됨)
       }inner class end
      }//outter class end
      
      
     4. 익명 클래스(*) – anonymous class
      : 이벤트 소스, 인터페이스, 클래스(x), 연결
 * */

관련 글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다