'일반 컴포넌트'에 해당되는 글 1건

13일차 수업 ( GUI / Frame / Panel ) 

 
1. 자바 GUI ( Graphic User Interface )

 가. AWT ( Abstract Window Toolkit )
 => GUI 컴포넌트를 보여줄때 OS자원을 이용해서 보여진다.
    따라서 Window와 UNIX에서 보여지는 컴포넌트가 다르다.
 => 성능이 떨어진다.

 나. Swing
 => 자신이 가지고 있는 자원을 이용해서 컴퓨넌트를 보여준다.
    따라서 OS와 상관없이 항상 동일한 화면으로 보여진다.
 => 성능이 좋다.

 

2. 레이아웃 매니저
- 컴포넌트들의 위치와 크기를 관리하는 클래스

 => 종류
 - BorderLayout : Frame이 기본적으로 사용하는 레이아웃
   * 5가지 영역 존재
   (Center, North, South, West, East)
   각 영역마다 한개의 컴퓨턴트가 올라간다. 여러개 올려도 마지막으로 올라간 컴포넌트만 보여진다.
   영역을 지정하지 않으면 Cneter에 올라간다.
   * 크기를 resize 하면 위치 변경없고 크기변경됨.

 - FlowLayout : Panel이 기본적으로 사용하는 레이아웃
   * 왼쪽에서 오른쪽으로, 위에서 아래로 올라간다.
   * 크기를 resize하면 크기변경없고 위치변경됨
 - GridLayout : 바둑판

 - CardLayout
 - GridBagLayout

 

4. 이벤트 처리
가. 이벤트(event)
    ==> 사용자에 의해서 발생되는 액션을 의미한다.
    예> 마우스 클릭, 키보드 입력 등..
    ==> 이벤트가 발생되면 행위가 발생된다.
        이런 행위는 메소드가 처리한다.
        이 메소드를 포함하는 클래스가 필요한데 이 클래스를 '이벤트 핸들러' 라고한다.

나. 이벤트 핸들러 ( event handler )
    ==> 이벤트가 발생되었을 때 실제로 처리작업을 구현한 클래스를 의미
    예> 버튼클릭 --> 창닫기
    => 반드시 interFace를 사용해야 된다.
       공통적으로 XXXListener 이름으로 되어있다.
       예> ActionListener, ItemListener

다. 이벤트 소스 ( event source )
-> 실제로 이벤트가 발생된 컴포넌트를 의미한다.

 

4. 중첩 클래스
용도 : 클래스구조를 가지고 있지만 ,다른클래스에서 사용하지 않고 특정 클래스에서만 사용하는 경우로 주로 GUI 이벤트 처리시 사용한다.

 

정의 : 클래스내에 또 다른 클래스가 지정 가능하다. 바깥쪽의 클래스를 Outer 클래스라고 하고,
안쪽의 클래스를 중첩클래스(nested 클래스, inner 클래스)라고 한다.

종류 : 중첩클래스가 Outer클래스의 어떤 위치에 지정되었는가에 따라 4가지로 구성된다.

 

 

<기본 예제> Frame일 이용하여 버튼 만들어보기

 

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;

 

public class FrameTest {

 Frame f;
 Button btnOK;
 Button btnCancel;
 Button btnWest;
 Button btnEast;
 Button btnSouth;


 public FrameTest() {
  f = new Frame("Frame 실습");
  btnOK = new Button("OK");
  btnCancel = new Button("Cancel");
  btnWest = new Button("West");
  btnEast = new Button("East");
  btnSouth = new Button("South");
 }

 public void init() {
  f.setLayout(new FlowLayout());
  f.add(btnOK, "Center");
  f.add(btnCancel, "North");
  f.add(btnWest, "West");
  f.add(btnEast, "East");
  f.add(btnSouth, "South");
  f.setSize(200, 200);
  f.setVisible(true);
 }

 public static void main(String[] args) {
 
  FrameTest t = new FrameTest();
     t.init();
    

 }
}

 

====수업 내용======

 

1. 자바 GUI ( Graphic User Interface )

 가. AWT ( Abstract Window Toolkit )
 => GUI 컴포넌트를 보여줄때 OS자원을 이용해서 보여진다.
    따라서 Window와 UNIX에서 보여지는 컴포넌트가 다르다.
 => 성능이 떨어진다.

 나. Swing
 => 자신이 가지고 있는 자원을 이용해서 컴퓨넌트를 보여준다.
    따라서 OS와 상관없이 항상 동일한 화면으로 보여진다.
 => 성능이 좋다.

2. AWT 의 계층구조

   Component

 Container   일반컴포넌트( Button,Textfield,List,Checkbox,Radio,,)

window  Panel

Frame  Dialog

- 일반컴포넌트는 반드시 Container에 얹혀서 보여진다.
- Panel도 반드시 Window계열 (Frame)에 얹혀서 보여진다.
- Panel은 복잡한 화면구성시 필요하다.

 일반 컴포넌트
 ------------
 Panel  / 일반 컴포넌트
 ----------------------
 Frame

3. 레이아웃 매니저
- 컴포넌트들의 위치와 크기를 관리하는 클래스

 => 종류
 - BorderLayout : Frame이 기본적으로 사용하는 레이아웃
   * 5가지 영역 존재
   (Center, North, South, West, East)
   각 영역마다 한개의 컴퓨턴트가 올라간다. 여러개 올려도 마지막으로 올라간 컴포넌트만 보여진다.
   영역을 지정하지 않으면 Cneter에 올라간다.
   * 크기를 resize 하면 위치 변경없고 크기변경됨.

 - FlowLayout : Panel이 기본적으로 사용하는 레이아웃
   * 왼쪽에서 오른쪽으로, 위에서 아래로 올라간다.
   * 크기를 resize하면 크기변경없고 위치변경됨
 - GridLayout : 바둑판

 - CardLayout
 - GridBagLayout

4. 이벤트 처리

* 용어정리
가. 이벤트(event)
    ==> 사용자에 의해서 발생되는 액션을 의미한다.
    예> 마우스 클릭, 키보드 입력 등..
    ==> 이벤트가 발생되면 행위가 발생된다.
        이런 행위는 메소드가 처리한다.
        이 메소드를 포함하는 클래스가 필요한데 이 클래스를 '이벤트 핸들러' 라고한다.

나. 이벤트 핸들러 ( event handler )
    ==> 이벤트가 발생되었을 때 실제로 처리작업을 구현한 클래스를 의미
    예> 버튼클릭 --> 창닫기
    => 반드시 interFace를 사용해야 된다.
       공통적으로 XXXListener 이름으로 되어있다.
       예> ActionListener, ItemListener

다. 이벤트 소스 ( event source )
-> 실제로 이벤트가 발생된 컴포넌트를 의미한다.

  예> OK 버튼 Cancel 버튼
 Button btnOK = new Button("OK");
 Button btnCancel = new Button("Cancel");

 OK버튼을 클릭 => btnOK 참조변수가 이벤트 소스가 된다.

    =>  이벤트 소스와 이벤트 핸들러 열결시키는 작업이 필요하다.
  예> btnOK.addXXXListener(핸들러클래스); 
   
    => 이벤트 소스 식별하는 방법
      
     - e.getActionCommand(); String
     - e.getSource() : Object

     예>
        Button btnOK = new Button("OK");
 Button btnCancel = new Button("Cancel");

* 이벤트 처리 아키텍쳐


 화면구성 클래스

 Button 생성
 버튼 클릭
 OK버튼 ---------------> 이벤트 핸들러 클래스
     ( System.out.println() 구현 )
      ,반드시 XXListener 인터페이스 구현

5. 이벤트 핸들러 클래스 위치에 따른 이벤트 처리 방법 4가지

 가. 화면구성클래스, 이벤트핸들러 클래스

 예> GUI.java , ButtonHandler.java
    
     public class GUI implemets ActionListener{
     }
 
 나. 화면 구성 클래스에서 처리

    - 자신이 구현
  
 -

6. 중첩 클래스
  용도 : 클래스구조를 가지고 있지만 ,
  다른클래스에서 사용하지 않고 특정 클래스에서만 사용하는 경우.
  주로 GUI 이벤트 처리시 사용한다.


  정의 : 클래스내에 또 다른 클래스가 지정 가능하다.
  바깥쪽의 클래스를 Outer 클래스라고 하고,
  안쪽의 클래스를 중첩클래스(nested 클래스, inner 클래스)라고 한다.

  종류 : 중첩클래스가 Outer클래스의 어떤 위치에 지정되었는가에
  따라 4가지로 구성된다.

 가.member 중첩 클래스
   ==> inner 클래스가 Outer 클래스의 맴버(변수,메소드)처럼 지정된 방식.

 예 >
  public class Outer{
      private int num =10;
      public int getnum(){ return num; }

      class Inner{
       int s=20;
       public void getInfo(){}
       //num 접근가능

      }

     => inner를 사용하기 위해서 반드시 outer클래스부터 객체생성해야 된다.
        예 > Outer o = new Outer();
      Outer.Inner i = o.new Inner();
      i.getInfo();

     => outer 클래스의 private 맴버도

 나. local 중첩 클래스
   ==> inner 클래스가 Outer 클래스의 메소드내에 지정된 방식.
 
 예 > class Outer{
  int num;
  public void getInfo(){
   int size = 10; //로컬변수
   final int kkk =10;
   //로컬 Inner
   class inner{
    public void getXX(){ }
      // size 접근불가
      kkk접근 가능( final 만 접근가능 )
   }

      Inner i = new Inner();
   i.getXX();   

  }
      }

  ==> Outer 메소드내에서 Inner 클래스를 객체생성해야 된다.
      Outer 메소드내의 로컬변수 접근 불가.

 

 다. Static 중첩 클래스
   ==> 중첩클래스가 static 으로 지정된 형태

 예 >
      class Outer{
  int num = 10;
  public void getInfo(){ } 

  //static inner  //먼저 생성이되서 위에num을 쓸수 없는것이다.
  static class Inner{

  }
      }

   ===> Outer클래스의 맴버 접근이 불가능하다.
        이유는 생성시점이 다르다.
        Inner 클래스는 Outer클래스명으로 접근이 가능하다.

 


 라. 익명 클래스
   ==> Outer 클래스내의 inner 클래스이지만,
       이름이 없는 inner 클래스이다.

   ==> 인터페이스, 추상클래스 사용시 주로 사용된다.

 예 > 추상클래스 사용하는 경우
 

 예 >
      일반클래스명 변수명 = new 일반클래스();

 

      추상클래스명 변수명 = new 추상클래스(){

   //추상메소드 구현

      };


      인터페이스명 변수명 = new 인터페이스(){

   //추상메소드 구현

      };

 

 

///////////////////////////////////
* 이클립스 플러그인
  ==> 이클립스에 기본 프로그램외에 추가적인 기능을
      제공하는 방법.
  ==> 자바GUI 개발시 사용 가능한 플로그인
      (windowBuilder)


가.
http://www.eclipse.org/windowbuilder/

나. 다운로드 선택

다. 4.2 link 누르지 말고 오른쪽클릭>속성>주소복사

라. 이클립스에서 help > install New Software 선택

마. Add 버튼 선택후에

 Name : 아무거나

 location : 복사한 주소

  이후에는 Next로 설치.

마지막으로 이클립스 재시작

//////////////////////////////////////

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,