|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.kwis.msp.lcdui.Display
화면의 출력 관련 함수와 정보를 가지는 클래스입니다.
기본적으로 화면에 무언가를 출력하기 위해서 Display
를 구한후에
Card
를 생성하고,
pushCard
함수를 호출하여 Display
에
Card
를 등록 시킵니다.
이후에 Card
의 paint
함수에서
그려지는 내용이 화면에 출력됩니다.
한 화면(LCD)은 Display
에 대응합니다.
응용프로그램은 Display
을 여러개 가질 수 있습니다.
이는 휴대폰중에 듀얼 LCD가 있는 모델을 지원하기 위하여
JLet상에서 두 화면을 사용할 수도록
하기 위함입니다.
Display
를 얻어 오기 위해서는 getDisplay(java.lang.String)
함수를 사용하여
가져옵니다.
한 화면을 여러개의 Card
로 구성됩니다.
Card
는 맨 아래 Card
부터 시작해서
하나씩 그려지며, 맨 마지막에는 스택 맨 상위에 있는 Card
가
그려집니다.
이런 메커니즘으로 대화 상자등을 처리할 수 있도록 하였습니다.
입력은 반대 방향으로 맨 상위에 있는 Card
에게
전달되며 이 Card
는 자신이
이벤트를 처리했는지 않했는지 여부를 돌려줍니다. 만일 처리했다면, 더이상
이벤트는 하위 Card
에게 전달되지 않지만, 처리하지
않았다면 하위 Card
에게
전달되며, 다시한번 처리여부를 확인하게 되어 맨 아래 Card
까지
전달 될
수도 있습니다. 실제로 InputMethodHandler
에 의해서
생성되는 창이나 기타 대화 상자등은
이런 식으로 처리가 됩니다.
듀얼 LCD에 대응하는 Display
에서는 사용자
입력 이벤트(키 이벤트, 포인터 이벤트)가 발생하지
않음을 유의하십시오.
Card
Method Summary | |
void |
addJletEventListener(JletEventListener qel)
JletEvent 를 받을 리스너를 등록합니다.
key, repaint, point외에 발생하는 모든 이벤트가 발생시에
호출되는 리스너를 등록합니다.
|
void |
callSerially(Runnable r)
이벤트가 다 처리되고 난 후에 특정 Runnable 의 함수 run 을
호출하도록 합니다.
|
void |
callSerially(Runnable r,
int timeout)
이벤트가 다 처리되고 난 후에 특정 Runnable 의 함수 run 을
호출하도록 합니다.
|
int |
countCard()
Display에 등록된 카드의 갯수를 가져옵니다. |
void |
flush()
내부의 버퍼의 내용을 화면에 출력하도록 합니다. |
int |
getBitsPerPixel()
화면의 한 픽셀당 차지하는 비트(bit)를 돌려줍니다. |
static Display |
getDefaultDisplay()
기본 Display 를 얻어 옵니다.
|
static Display |
getDisplay(String str)
문자열에 대응하는 Display 를 얻어 옵니다.
|
Card |
getDockedCard()
붙여진 카드를 돌려줍니다. |
static int |
getGameAction(int key)
지정한 키 코드에 대응하는 게임키를 구합니다. |
int |
getHeight()
화면의 높이를 돌려줍니다. |
static int |
getKeyCode(int gameKey)
게임키에 대응하는 키 코드값을 얻어 옵니다. gameKey는 EventQueue.UP, EventQueue.DOWN, EventQueue.LEFT,
EventQueue.RIGHT, EventQueue.FIRE, EventQueue.GAME_A,
EventQueue.GAME_B, EventQueue.GAME_C, EventQueue.GAME_D,
|
static String |
getKeyName(int key)
키 코드에 대응하는 키 이름의 문자열을 돌려 받습니다. |
int |
getWidth()
화면의 폭을 돌려줍니다. |
void |
grabKey(int key,
JletEventListener qel)
특정 키를 함수를 부르는 응용 프로그램에서 소유하게 합니다. |
boolean |
hasPointerEvents()
시스템에 포인터 디바이스관련 이벤트가 있는지 여부를 돌려줍니다. |
boolean |
hasPointerMotionEvents()
시스템에 포인터 움직임 디바이스 이벤트가 있는지 여부를 돌려줍니다. |
boolean |
hasRepeatEvents()
키 반복 이벤트가 발생할 수 있는지 없는지 여부를 돌려줍니다. |
boolean |
isColor()
화면이 컬러 색상을 지원하는지 여부를 돌려줍니다. |
boolean |
isDoubleBuffered()
화면이 더블 버퍼링(double buffering)인지 여부를 돌려줍니다. |
int |
numColors()
화면에서 사용할 수 있는 색상의 갯수를 돌려줍니다. |
Card |
popCard()
카드를 꺼내옵니다. |
void |
pushCard(Card c)
카드를 화면에 보일 수 있도록 합니다. |
void |
removeAllCards()
모든 카드를 제거합니다. |
boolean |
removeCard(Card c)
특정 카드를 제거합니다. |
void |
removeJletEventListener(JletEventListener qel)
JletEvent 를 받을 리스너를 삭제합니다. |
void |
setDockedCard(Card cd,
int where)
|
void |
setJletEventListener(JletEventListener qel)
|
void |
ungrabKey(int key)
grabKey 로 인한 이벤트 소유를 이전 상태로 돌립니다.
|
static void |
where()
|
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method Detail |
public static Display getDefaultDisplay()
Display
를 얻어 옵니다.
기본 화면에 대응하는 Display
를 얻어 옵니다.
ql가 null이면 NullPointerException이 발생합니다.NullPointerException
- ql이 null인 경우public static final Display getDisplay(String str)
Display
를 얻어 옵니다.
이때 문자열이 null
이면 기본 Display
를
얻어 오며,
폰에 따라서는 문자열을 "dual"로 넘겨주면
듀얼 lcd에 대응하는 Display
를 얻어 올수 있습니다.
만일 해당하는 Display
가 없는 경우에는
null을 돌려줍니다.ql
- Jletstr
- display를 가르키는 문자열NullPointerException
- ql이 null인 경우public final void pushCard(Card c)
만일 같은 카드가 이미 화면에 보여지고 있다면,
이 함수는 아무런 일도 하지 않습니다.
또한 c
값이 null
이면
아무런 동작도 하지 않습니다.
화면에 카드가 보여지게되면, 그리기 전에 showNotify
함수를
호출합니다.
그리고 나서 repaint
가 불리기 때문에 특정 시간 이후에
paint
가
불려져 화면에 나타납니다.
이후로 isShown()
이라는 함수는
항상 true
를 돌려주도록 되어 있습니다.
응용 프로그램이 타 응용 프로그램을 수행한 후에
pushCard()
를 하게 되면,
그 카드는 화면 맨 상단에 보여지지 않고, 타 응용 프로그램의
바로 아래에 위치하게 됩니다.
c
- 화면에 맨 상위에 보여질 카드.NullPointerException
- c가 null인 경우public final Card popCard()
카드를 화면에서 제거하며, 그 카드를 가져옵니다. 만일 아무런
Card
도 없다면 null
을 돌려줍니다.
카드는 현재 수행하고 있는 Jlet
에서
생성한 카드만을 꺼내 옵니다.
만일 카드가 존재한다면, 그 카드의 showNotify()
함수를
불러준 후에
카드를 화면에서 제거합니다.
이 함수 이후로 isShown()
함수를 부르면 항상
false
를 돌려줍니다.
public final boolean removeCard(Card c)
c
가 null이라면 false
를 돌려줍니다.c
- 삭제할 카드public void removeAllCards()
Jlet
이 생성한
모든 카드를 Display
에서 제거합니다.
각 카드의 showNotify()
가 각각 불리며,
더 이상 카드는 화면에 나타나지 않습니다.public final int countCard()
Jlet
이 Display
에 등록한
카드의 갯수를 가져옵니다.public final void callSerially(Runnable r)
Runnable
의 함수 run
을
호출하도록 합니다.
이벤트 큐 맨 뒤에 'Runnable'을 부르는 이벤트를 넣고,
곧바로 함수가 종료 됩니다.
이벤트 처리 쓰래드가 이 이벤트를 처리할 때에는 Runnable
클래스의 run
을 수행하도록 되어 있습니다.
이런 구조로 인해서 r.run()
은 될수 있으면 짧은 수행 시간을
가져야 합니다. 여기서 무한 루프나 상당히 많은 시간을 소모
하는 작업을 하면, 이벤트관련 처리를 못하므로, 프로그램이
사용자 입력을 제대로 처리하지 못합니다.r
- 수행할 runnable 객체NullPointerException
- r
이 null
인 경우public final void callSerially(Runnable r, int timeout)
Runnable
의 함수 run
을
호출하도록 합니다.
이벤트 큐 맨 뒤에 'Runnable'을 부르는 이벤트를 넣고,
곧바로 함수가 종료 됩니다.
이벤트 처리 thread가 이 이벤트를 처리할 때에는 Runnable
클래스의 run
을 수행하도록 되어 있습니다.
이런 구조로 인해서 r.run()
은 될수 있으면 짧은 수행 시간을
가져야 합니다. 여기서 무한 루프나 상당히 많은 시간을 소모
하는 작업을 하면, 이벤트관련 처리를 못하므로, 프로그램이
사용자 입력을 제대로 처리하지 못합니다.
이 함수는 특정 시간 이후에 r
의 run
을 부를 수 있도록 해줍니다. 만일 timeout이 0보다 작으면 0으로 간주합니다.r
- 수행할 runnable 객체timeout
- Runnable이 불려질 시간(밀리 세컨드 단위)NullPointerException
- r
이 null
인 경우IllegalArgumentException
- timeout이 음수인 경우
public Card getDockedCard()
public void setDockedCard(Card cd, int where)
public final boolean isColor()
public final int numColors()
public final boolean hasPointerEvents()
public final boolean hasPointerMotionEvents()
public final boolean hasRepeatEvents()
public final int getWidth()
public final int getHeight()
public boolean isDoubleBuffered()
Graphics
에 그릴때 화면에 즉시 나타나는 것이 아니라,
특정 함수(flush
)를 호출해야만 그린 내용이 화면에 나타납니다.public static int getKeyCode(int gameKey)
EventQueue.UP, EventQueue.DOWN, EventQueue.LEFT,
EventQueu