메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

Jlet Programming의 시작(2) - Display 클래스

한빛미디어

|

2006-01-03

|

by HANBIT

7,495

저자: 박건태, 김승엽
출처: Jlet으로 배우는 위피 프로그래밍(한빛미디어, 2005) 3장 중에서


Jlet Programming의 시작(1) - Jlet 응용프로그램 & Jlet 클래스

이제 우리의 관심사는 ‘핸드폰 LCD화면에 무엇인가 출력하기 위해 어떻게 해야 하는가?’ 일 것이다.
출력을 했다는 것. 그 자체가 하나의 프로그램이 성공적으로 돌아간다는 것이다. 물론 어떤 프로그램은 출력이 없을 수도 있다.
이번 절과 다음절을 통해 우리는 LCD화면에 무언가를 출력하기 위한 최소한의 기법에 관해 논의해 볼 것이다.

Jlet클래스가 Jlet 프로그래밍을 위한 시작과 종료의 정보를 갖고 있다고 했다. 즉, 구현 할 수 있는 메소드가 있다는 말이며 화면에 무엇인가 출력하기 위한 정보는 Display 클래스와 Card 클래스에서 찾을 수 있다는 것이다.

사실 무언가를 이해하고자 할 때 그림만큼 이해하기 쉬운 것도 없다.
그리하여 다음과 같이 액자 그림을 하나 준비해 보았다.



[그림3.2 Display와 Card클래스]


Display를 하나의 액자라고 생각해 보자.
[그림3.2]처럼 액자와 아직 아무것도 그려 넣지 않은 종이가 준비되어 있다.
액자에는 사이즈가 있을 것이다. 사이즈에 맞는 종이에 사진이던 그림이던 무언가를 그려 넣은 후 액자에 넣으면(push) 하나의 멋진 작품이 될 것이다.
여기서 말하는 액자 역할을 하는 것이 Display 클래스 이고 종이 역할을 하는 것이 Card클래스이다.  
이런 메커니즘을 통해 LCD화면에 무언가를 처리할 수 있도록 하였다.

Card클래스에 관해서는 다음 절에서 자세히 알아보도록 하고 이번 절에서는 Display클래스에 관해 집중적으로 알아보는 시간을 갖자.

정의를 내리자면 Display클래스는 화면의 출력에 관련한 메소드와 정보를 가지는 클래스이다.
기본적으로 화면에 무언가를 출력하기 위해 Display클래스를 구현한 후 Card를 생성하고, pushCard() 메소드를 호출하여 Display클래스에 등록을 시킨다. 이후에 Card의 paint메소드를 이용하여 그려지는 내용이 화면에 출력된다. (사실상 이후에 그려지는 내용이 화면에 출력된다는 것은 약간 어패가 있다. Card가 Display에 push될 때 paint()메소드가 반드시 한 번 호출된다. 그러므로 paint()에 그려진 내용이 화면에 뿌려지게 되는 것이다. 이에 관해서는 차후에 설명하게 될 것이다.)

액자와 종이를 이용해 push하여 LCD에 출력하는 것은 알았다. 그런데 갑자기 paint메소드를 이용하여 그린다?
그렇다 하나 준비를 못한 것이 있는데, 바로 그리는 도구이다. 그리는 도구의 역할을 하는 것이 paint메소드라 일단 생각하고 넘어가자.

자, 그럼 Display 내부를 자세히 들여다 보자.
그래야 자유자재로 가져다가 쓸 수 있을 것이다.
남의 속을 들여다 보는 재미(?)로 한 번 살펴 보자.

java.lang.Object
  |
  +--org.kwis.msp.lcdui.Display

public class Display extends Object

[Display 클래스 계층도]

먼저, public class Display extends Object 에서 볼 수 있듯이 Display란 놈은 아버지인 Object로부터 상속을 받으니까 상속받는 메소드가 있을 것이다.
상속 받는 메소드는 다음과 같다.

mmgt;mmgt;Object로부터 상속받는 메소드들
equals(Object o), getClass(), hashCode(),notify(), notifyAll(), toString(), wait(), wait(long ms), wait(long ms, int ns)

다음은 자주 쓰이는 메소드(method)들을 모아 보았다.
집에서도 자주 쓰는 접시만 따로 모아 두고 쓰듯이 필요하면 그때 그때 API문서를 보면서 찾아서 쓰면 되는 것이다.
필자 역시 다 외우고 쓰지는 않는다. 필요할 때마다 찾아서 쓰는 것이다.
이 많은 API 클래스에 거기 딸린 메소드들까지 다 외운다면…… 당신이 살던 별로.. 안녕히 가세요~다.

Display클래스 주요 method
public static Display getDefaultDisplay( )
기본 Display를 얻어 온다. 기본 화면에 대응하는 Display를 얻어 온다
public final void pushCard(Card c)
카드를 화면에 보일 수 있도록 한다.
public final Card popCard()
카드를 꺼내온다.
카드를 화면에서 제거하며, 그 카드를 가져온다. 만일 아무런 Card 도 없다면 null을 돌려준다. 카드는 현재 수행하고 있는 Jlet에서 생성한 카드만을 꺼내 온다.
public final boolean removeCard(Card c)
특정 카드를 제거한다. 카드를 화면에서 제거하며, 그 카드를 가져온다. popCard와는 카드를 지정하는 것 외에 다른 점은 없다. 만일 c가 null이라면 false를 돌려준다.
public final void callSerially(Runnable r)
이벤트가 다 처리되고 난 후에 특정 Runnable의 메소드 run을 호출하도록 한다.
public final int getWidth()
화면의 폭을 돌려준다. 화면의 픽셀단위의 폭을 돌려준다
public final int getHeight()
화면의 높이를 돌려준다. 화면의 픽셀단위의 높이를 돌려준다.
public static int getGameAction(int key)
지정한 키 코드에 대응하는 게임키를 구한다. 시스템 키 코드를 넘긴다.

메소드 중에서 getWidth()와 getHeight()메소드가 있다는 것을 알 수 있을 것이다.(메소드를 읽는 방법에 관해서는 4장에서 자세히 다룬다.)
이것으로 화면의 폭과 넓이를 알 수 있는데 위에서 말한 액자의 사이즈를 알려주는 역할을 하는 셈이다.

[핵심]
Display클래스는 화면의 출력관련 메소드와 정보를 가지는 클래스이다.
TAG :
댓글 입력
자료실