거의 모든 프로그래밍 언어를 입문할 때, 화면에 <Hello World>를 출력하는 것을 제일 먼저 시작한다. Jlet 응용 프로그램 입문에서도 <Hello World>를 한번 출력해 보겠다. 화면에 무엇인가를 출력하기 위한 정보는 Display 클래스와 Card클래스에서 찾을 수 있다. - public final Card popCard() - public final boolean removeCard(Card c) - public final void callSerially(Runnable r) - public final int getWidth() - public Card(Display d) - public Card(int x, int y, int w, int h) - public Card(Display d, int x, int y, int w, int h) - public Card(Display d, int x, int y, int w, int h, boolean b) - public boolean isShown()
Display 클래스와 Card클래스에 대해 조금 자세히 알아 보자.
1.Display 클래스
Display클래스는 액자에 Card클래스는 액자에 끼워넣는 종이에 비유된다. 즉 화면에 무엇인가를 출력하기 위해서느 Card클래스에 무엇인가를 그린후 Display클래스에 끼워넣기를 해야 화면에 출력이 이루어진다는 것이다.
Display 클래스의 주요 매소드 - public static Display getDefaultDisplay()
기본화면에 대응하는 Display를 얻어온다.- public final void pushCard(Card c)
카드를 화면에 보일 수 있도록 한다.
카드를 화면에서 제거하며, 그 카드를 가져온다. 만일 아무런 카드도 없으면 null을 돌려준다.
특정 카드를 제거한다. popCard()와는 카드를 지정하는 것 외에 다른 점은 없다.
매개변수 c가 null 이라면 false를 돌려준다.
이벤트가 다 처리되고 난 후 특정 Runnable의 메소드 run을 호출하도록 한다.
화면의 폭을 픽셀 단위로 얻는다.- public final int getHeight()
화면의 높이를 픽셀 단위로 얻는다.- public static int getGameAction(int key)
지정한 키 코드에 대응하는 게임키를 구한다. 시스템 키코드를 넘긴다.
2. Card 클래스
Card 클래스는 추상 클래스이기 때문에 paint(Graphics g) 메소드를 반드시 구현해야 한다. 그리고 카드는 사용자 입력을 받을 수 있는데, keyNotify, pointerNotify등 사용자에 의해 불려지는 메소드가 있으며, 모든 이벤트는 일단 스택 상위의 카드로 전달된다. 전달된 이벤트가 그 카드에서 처리된다면 위의 불려지는 메소드는 true를 돌려주며, 하위 카드는 이벤트를 받지 못한다. 그러나 반대로 false를 돌려주면 하위 카드에게 이벤트를 전달하며, 같은 식으로 이벤트를 받은 하위 카드는 true, false를 돌려준다.
Display 클래스의 주요 생성자 - public Card()
기본적으로 화면 크기의 카드를 생성한다. 이때 Display.getDefaultDisplay 메소드가 돌려주는 Display 의 크기로 잡힌다.- public Card(boolean b)
화면 크기의 카드를 생성한다. 매개변수 b에 따라 투명 여부가 결정 된다.
화면 크기의 카드를 생성한다.
지정한 위치에 지정한 크기의 카드를 생성한다.
지정한 Display를 위해 지정한 위치에 지정한 크기의 카드를 생성한다.
지정한 Display를 위해 지정한 위치에 지정한 크기로 b에 따라 투명 여부를 결정하여 카드를 생성Card 클래스 주요 메소드 - protected abstract void paint(Graphics g)
카드의 내용을 그려준다. Card 클래스를 상속한 클래스는 이 매소드를 반드시 구현해 주어야 한다.- public void repaint(int x, int y, int w, int h)
지정한 영역을 다시 그려준다.- public void repaint()
카드의 전체 영역을 다시 그려준다.- public void serviceRepaints()
repaint() 영역을 다시 그리고 화면에 출력한다.
카드가 화면에 보이지 안보이는지의 여부를 돌려준다.
이제 Display 클래스와 Card 클래스를 이용하여 화면에 <Hello WIPI>를 출력하는 예제를 만들어 보자.
import org.kwis.msp.lcdui.*;
public class wipiTest2 extends Jlet{
public void startApp(String args[]){
Display d= Display.getDefaultDisplay();
CardTest card= new CardTest();
d.pushCard(card);
}
public void pauseApp(){}
public void resumaApp(){}
public void destroyApp(boolean b){}
};
class CardTest extends Card{
public void paint(Graphics g){
g.drawString("Hello WIPI", 10, 10, g.TOP|g.LEFT);
}
};
출력은 다음과 같다.
'Computer > Jlet' 카테고리의 다른 글
[11] 컴포넌트 - (1)ContainerComponent (0) | 2006.08.11 |
---|---|
[10] 컴포넌트 (0) | 2006.08.11 |
[8] Jlet Class (0) | 2006.08.03 |
[7] Testing (0) | 2006.08.03 |
[6] EditPlus Setting for Jlet (0) | 2006.08.03 |