MID 프로필

javax.microedition.lcdui
Class CustomItem

java.lang.Object
  |
  +--javax.microedition.lcdui.Item
        |
        +--javax.microedition.lcdui.CustomItem

public abstract class CustomItem
extends Item

CustomItem은 새로운 시각적 요소 및 대화식 요소를 Forms에 도입하기 위해 클래스 세분화를 통해 사용자 정의할 수 있습니다. 서브 클래스는 크기 조정과 렌더링 및 색, 글꼴, 그래픽 선택을 비롯한 시각적 모양을 담당합니다. 서브 클래스는 키, 포인터 작업 및 순회 작업으로 생성된 이벤트에 응답하여 사용자 상호 작용 모드를 담당합니다. 마지막으로 서브 클래스는 CustomItem 값이 변경된 수신기의 알림을 트리거하기 위해 Item.notifyStateChanged() 호출을 담당합니다.

다른 Item과 마찬가지로 CustomItem에는 최소기본 크기의 개념이 있습니다. 이는 내용, 레이블, 경계 등의 공간을 포함하는 Item의 전체 영역과 관련됩니다. Item의 영역 및 크기에 대한 자세한 내용은 항목 크기를 참조하십시오.

또한 CustomItem 서브 클래스에는 CustomItem의 컨텐트 영역 크기인 내용 크기의 개념이 있습니다. 컨텐트 영역은 CustomItem이 차지하는 전체 영역 내의 직사각형 영역입니다. 컨텐트 영역은 CustomItem 서브 클래스가 입력 이벤트를 그리고 수신하는 영역입니다. 여기에는 레이블과 경계에 사용되는 공간은 포함되어 있지 않습니다. 구현 시 컨텐트 영역을 벗어난 Item의 영역 내에서 입력 이벤트를 레이아웃하고 그리며 처리합니다.

구현과 CustomItem 서브 클래스 간에 전달된 모든 좌표는 (0,0)에 있는 이 영역의 왼쪽 위 모서리와 함께 항목의 컨텐트 영역에 상대적입니다. getMinContentHeight, getMinContentWidth, getPrefContentHeight, getPrefContentWidthsizeChanged 메소드를 사용하여 구현과 CustomItem 서브 클래스 사이에 전달된 크기 정보는 모두 컨텐트 영역의 크기를 참조합니다. 구현 시 항목 크기 메소드 Item.getMinimumHeight, Item.getMinimumWidth, Item.getPreferredHeightItem.getPreferredWidth에서 보고하는 대로 Item의 전체 영역 크기와 컨텐트 영역 크기 간의 차이를 계산하고 유지합니다.

구현 시 CustomItem에서 반환하는 크기 정보가 사용자 인터페이스 정책에 의해 부과된 제한을 초과하는 경우 무시합니다. 이 경우 구현 시에는 sizeChangedpaint 메소드를 통해 CustomItem에 부여된 실제 크기를 항상 보고해야 합니다. 예를 들어, 구현 시 Item이 화면보다 더 커지지 않도록 하는 경우에 이러한 상황이 발생할 수 있습니다. CustomItem 서브 클래스 코드가 CustomItem을 화면보다 크게 만드는 getMinContentWidth에서 값을 반환하는 경우 구현 시 getMinContentWidth에서 반환된 최소 너비보다 더 좁은 너비를 할당할 수 있습니다.

구현 시 다른 CustomItem 메소드와 관련된 순서로 CustomItem의 내용 크기 메소드 getMinContentHeight, getMinContentWidth, getPrefContentHeightgetPrefContentWidth를 호출할 수 있습니다. 이러한 모든 메소드에 대해 CustomItem 서브 클래스 코드는 현재 CustomItem의 내용과 일치하는 값을 반환해야 합니다. 내용이 변경되면 CustomItem 서브 클래스 코드가 단순히 내용 크기 메소드에서 다양한 값을 반환하기 시작하기에 충분하지 않습니다. 대신 내용이 변경될 때마다 서브 클래스 코드는 invalidate 메소드를 호출해야 합니다. 이는 구현에 레이아웃 계산을 수행해야 할 수 있음을 알려 구현 시 CustomItem의 새 내용을 기반으로 새 값을 얻기 위한 내용 크기 메소드를 호출합니다.

상호 작용 모드

CustomItem 클래스는 많은 항목에서 적당한 편집을 허용하지만 가능한 상호 작용을 모두 허용하지는 않습니다. 융통성에 대한 요구는 쉽게 마스터할 수 있는 단순한 API를 만드는 것에 대한 요구 사항과 상호 운용성을 저해하지 않으면서도 플랫폼별로 모양 및 색감의 변화를 허용할 필요성과 함께 균형을 이루고 있습니다.

일반적인 개념은 여러 상호 작용 "모드"가 있어 Form 구현 시 지원하는 내용을 전달할 수 있도록 하는 것입니다. 그런 다음 CustomItem에서 하나 이상의 상호 작용 모드를 지원하도록 선택할 수 있습니다. CustomItem에서 모든 상호 작용 모드를 조합하여 구현할 때 필요한 요구 사항은 없습니다. 일반적으로 CustomItem은 특정 상호 작용 모드에 의존하는 고도의 대화식 접근 이외에도 모든 플랫폼에서 작동하는 접근 방법(예: 아래에 설명된 별도의 화면 편집 기술)을 구현합니다. 런타임 시 CustomItem 코드는 이 상호 작용 모드를 지원할 것인지 여부를 결정하기 위해 시스템에 쿼리할 수 있습니다. 지원하는 경우 CustomItem은 이 상호 작용 모드를 사용할 수 있으며 지원하지 않는 경우 모든 플랫폼에서 작동하는 방법으로 폴백합니다.

CustomItem은 항상 항목 명령을 사용하여 별도의 편집 화면을 호출할 수 있으며, 구분되는 상태 수가 적은 구성 요소는 상태를 변경한 다음 notifyStateChanged 알림을 발생시켜 간단히 응답할 수 있습니다. 별도의 편집 화면을 사용하기 위한 기술로는 다른 Displayable 객체(예: List)에 값을 로드한 다음 여기에서 Display.setCurrent(Displayable)를 호출하는 것이 있습니다. 사용자가 이 값의 편집이 완료되었음을 알리기 위해 명령(예: "OK")을 실행하면 수신기는 해당 Displayable 객체에서 값을 검색한 다음 이 항목을 반환하기 위해 Display.setCurrentItem(Item)을 호출합니다.

키패드 입력

구현 시 키패드 이벤트를 CustomItem에 전달하는 기능을 선택적으로 지원할 수 있습니다. 구현 시에는 getInteractionModes에서 반환하는 값의 KEY_PRESS, KEY_RELEASEKEY_REPEAT 비트를 설정하여 지원 수준을 나타냅니다. 이러한 비트에 해당하는 이벤트는 keyPressed(), keyReleased()keyRepeated() 메소드 각각에 대한 호출을 통해 전달됩니다. 구현 시 KEY_RELEASE 이벤트를 지원하면 KEY_PRESS 이벤트도 지원해야 합니다. 구현 시 KEY_REPEAT 이벤트를 지원하면 KEY_PRESSKEY_RELEASE 이벤트도 지원해야 합니다. 지원되는 경우 KEY_RELEASE 이벤트는 보통 해당 KEY_PRESS 이벤트가 수신된 다음에 발생하며 KEY_REPEAT 이벤트는 보통 KEY_PRESSKEY_RELEASE 이벤트 사이에서 발생합니다. 하지만 CustomItem이 표시될 때 키를 누르면 해당 KEY_PRESS가 없어도 CustomItemKEY_RELEASEKEY_REPEAT 이벤트를 수신할 수 있습니다.

이벤트가 발생한 키를 나타내기 위해 키 이벤트 메소드가 keyCode에 전달됩니다. 구현 시 키 코드 Canvas.KEY_NUM0 에서 Canvas.KEY_NUM9, Canvas.KEY_STARCanvas.KEY_POUND를 사용하여 사용자가 이벤트를 생성할 수 있는 방법을 제공해야 합니다. 또한 구현 시 장치별 키를 포함하여 다른 키에 대한 키 이벤트도 전달할 수 있습니다. CustomItem에 사용할 수 있는 키 집합은 명령이 추가되었는지 여부에 따라 달라질 수 있습니다.

응용 프로그램은 getGameAction 메소드를 사용하여 키 코드를 게임 작업에 매핑할 수 있습니다. 구현 시 CustomItem에서 키 이벤트를 지원하는 경우 모든 게임 작업을 CustomItem에서 사용할 수 있도록 충분한 키 코드 집합과 게임 작업에 대한 매핑을 제공해야 합니다.

CustomItem에서 사용할 수 있는 키 집합과 키 이벤트는 Canvas에서 사용할 수 있는 것에 따라 달라질 수 있습니다. 특히, 순회를 지원하는 시스템에서 시스템은 순회용 방향 키를 사용하고 이러한 키를 CustomItem에 전달하지 않도록 선택할 수 있습니다. CustomItem의 키 코드와 게임 작업 사이의 매핑은 Canvas의 매핑과 다를 수 있습니다. 키 코드와 게임 작업에 대한 자세한 내용은 Canvas 클래스에서 키 이벤트게임 작업을 참조하십시오.

포인터 입력

구현 시 선택적으로 CustomItem에 포인터 이벤트(예: 스타일러스 탭) 전달을 지원할 수 있습니다. 구현 시 getInteractionModes가 반환하는 값에서 POINTER_PRESS, POINTER_RELEASEPOINTER_DRAG 비트를 설정하여 지원 수준을 나타냅니다. 이러한 비트에 해당하는 이벤트는 pointerPressed(), pointerReleased(), pointerDragged() 메소드 각각에 대한 호출을 통해 전달됩니다. 구현 시 POINTER_RELEASE 이벤트를 지원하면 POINTER_PRESS 이벤트도 지원해야 합니다. 구현 시 POINTER_DRAG 이벤트를 지원하면 POINTER_PRESSPOINTER_RELEASE 이벤트도 지원해야 합니다. 지원되는 경우 POINTER_RELEASE 이벤트는 보통 해당 POINTER_PRESS 이벤트를 수신한 다음 발생하며 POINTER_DRAG 이벤트는 보통 POINTER_PRESSPOINTER_RELEASE 이벤트 사이에서 발생합니다. 하지만 CustomItem이 표시될 때 포인터를 누르면 해당 POINTER_PRESS가 없어도 CustomItemPOINTER_RELEASEPOINTER_DRAG 이벤트를 수신할 수 있습니다.

포인터 이벤트의 (x,y) 위치는 각 포인터 이벤트에 의해 보고됩니다. 이 위치는 CustomItem의 좌표 시스템으로 표현되며 여기서 (0,0)CustomItem의 왼쪽 위 모서리입니다. 특정 상황에서 포인터 이벤트는 해당 항목의 범위를 벗어나서 발생할 수 있습니다.

순회

구현 시 CustomItem에 대한 내부 순회를 지원합니다. 즉, 구현 시 일시적으로 해당 항목에 순회를 위임합니다. CustomItem 내부에 순회 위치가 하나만 있더라도 사용자가 항목을 순회할 때 특수화된 강조 표시, 애니메이션 등을 수행할 수 있도록 항목에 내부 순회 프로토콜을 지원하려 할 수 있습니다.

구현 시 getInteractionModes()가 반환하는 값에서 TRAVERSE_HORIZONTAL 또는 TRAVERSE_VERTICAL 비트 중 하나나 두 가지 모두를 설정하여 CustomItem에 대한 내부 순회 지원을 표시합니다. 이러한 비트 중 어느 하나도 설정되어 있지 않은 경우에는 구현 시 CustomItem이 내부적으로 순회하는 것을 허용하지 않거나 구현 시 순회를 전혀 지원하지 않습니다. 구현 시 순회를 지원하지만 CustomItem에 대한 내부 순회를 거부하는 경우 CustomItem의 컨텐트 영역을 벗어나는 고유 강조 표시 기능을 제공합니다.

CustomItem은 내부 순회를 전혀 지원하지 않아도 됩니다. traverse 메소드에 대한 초기 호출에 false를 반환하여 이를 수행할 수 있습니다(CustomItem에서 이 메소드를 무시하지 않는 경우의 기본 동작). 이 경우 시스템은 사용자가 항목을 순회하여 통과할 수 있도록 조정해야 합니다. 특히 내부 순회의 발생 여부에 상관없이 해당 항목이 화면 높이를 초과하는 경우 시스템은 적절한 스크롤이 발생할 수 있도록 조정해야 합니다.

구현 시 순회 이벤트를 CustomItem에 전달하는 기능을 지원하지 않더라도 키패드나 포인터 이벤트를 CustomItem에 전달하는 기능을 지원할 수 있습니다. 구현 시 키패드나 포인터 이벤트를 CustomItem에 전달하는 기능을 지원하는 경우 이러한 CustomItem이 초기 traverse() 호출에 대해 false를 반환하여 내부 순회를 거부했더라도 모든 CustomItem에 대해 전달할 수 있는 방법을 제공해야 합니다. 이는 특정 항목이 내부 순회를 지원하지 않더라도 구현 시 해당 항목에 대한 초점 개념을 지원해야 한다는 것을 의미합니다.

항목이 내부 순회를 수행하는 데 필요한 동작 및 책임에 대한 전체 사양은 traverse 메소드 설명서를 참조하십시오.

항목 모양

각 항목의 시각적 모양은 레이블(구현 시 처리) 및 내용(서브 클래스에서 처리)으로 구성됩니다.

레이블은 해당 항목이 아닌 구현 담당입니다. CustomItem의 내용에 대해 할당된 화면 영역은 구현 시 CustomItem 레이블을 표시하기 위해 사용하는 영역과는 별도입니다. 구현 시 컨텐트 영역에 대하여 레이블 및 레이아웃의 렌더링을 제어합니다.

CustomItempaint 메소드가 호출될 때마다 내용 그리기를 담당합니다.

포그라운드, 백그라운드, 강조 표시된 포그라운드, 강조 표시된 백그라운드, 경계선 및 강조 표시된 경계선 색은 Display.getColor(int)에서 검색해야 합니다. 그러면 CustomItem이 장치에서 제공한 다른 항목의 색 구성표와 일치합니다. CustomItem은 고유의 강조 표시 상태와 강조 표시되지 않은 상태를 추적합니다.

사용된 글꼴은 Font.getFont(int)에서 검색해야 합니다. 그러면 일관된 시각적 모양을 위해 장치의 다른 항목에서 사용한 글꼴과 일치시킬 수 있습니다.

Since:
MIDP 2.0

Field Summary
protected static int KEY_PRESS
          키 누르기 이벤트 지원을 나타내는 상호 작용 모드 비트.
protected static int KEY_RELEASE
          키 놓기 이벤트 지원을 나타내는 상호 작용 모드 비트.
protected static int KEY_REPEAT
          키 반복 이벤트 지원을 나타내는 상호 작용 모드 비트.
protected static int NONE
          순회가 이 항목 내에 들어갔거나 위치가 변경되었음을 알리고 이 순회 이벤트와 관련된 특정 방향이 없음을 알리는 순회 방향에 대한 값.
protected static int POINTER_DRAG
          포인트 끌기 이벤트 지원을 나타내는 상호 작용 모드 비트.
protected static int POINTER_PRESS
          포인트 누르기 이벤트 지원을 나타내는 상호 작용 모드 비트.
protected static int POINTER_RELEASE
          포인트 놓기 이벤트 지원을 나타내는 상호 작용 모드 비트.
protected static int TRAVERSE_HORIZONTAL
          CustomItem에 대한 수평 내부 순회 지원을 나타내는 상호 작용 모드 비트.
protected static int TRAVERSE_VERTICAL
          CustomItem에 대한 수직 내부 순회 지원을 나타내는 상호 작용 모드 비트.
 
Fields inherited from class javax.microedition.lcdui.Item
BUTTON, HYPERLINK, LAYOUT_2, LAYOUT_BOTTOM, LAYOUT_CENTER, LAYOUT_DEFAULT, LAYOUT_EXPAND, LAYOUT_LEFT, LAYOUT_NEWLINE_AFTER, LAYOUT_NEWLINE_BEFORE, LAYOUT_RIGHT, LAYOUT_SHRINK, LAYOUT_TOP, LAYOUT_VCENTER, LAYOUT_VEXPAND, LAYOUT_VSHRINK, PLAIN
 
Constructor Summary
protected CustomItem(String label)
          CustomItem 서브 클래스가 해당 레이블을 지정할 수 있게 하는 수퍼 클래스 구성자
 
Method Summary
 int getGameAction(int keyCode)
          장치의 지정된 키 코드와 관련된 게임 작업을 가져옵니다.
protected  int getInteractionModes()
          사용 가능한 상호 작용 모드를 가져옵니다.
protected abstract  int getMinContentHeight()
          컨텐트 영역의 최소 높이를 픽셀 단위로 반환하기 위해 서브 클래스에 의해 구현됩니다.
protected abstract  int getMinContentWidth()
          컨텐트 영역의 최소 너비를 픽셀 단위로 반환하기 위해 서브 클래스에 의해 구현됩니다.
protected abstract  int getPrefContentHeight(int width)
          컨텐트 영역의 기본 높이를 반환하기 위해 서브 클래스에 의해 구현됩니다.
protected abstract  int getPrefContentWidth(int height)
          컨텐트 영역의 기본 너비를 픽셀 단위로 반환하기 위해 서브 클래스에 의해 구현됩니다.
protected  void hideNotify()
          이전에는 부분이라도 표시되었지만 현재는 전혀 표시되지 않는 항목을 알리기 위해 시스템에서 호출합니다.
protected  void invalidate()
          CustomItem의 크기와 순회 위치를 업데이트해야 한다는 것을 알립니다.
protected  void keyPressed(int keyCode)
          키를 누를 때 시스템에서 호출합니다.
protected  void keyReleased(int keyCode)
          키를 놓을 때 시스템에서 호출합니다.
protected  void keyRepeated(int keyCode)
          키가 반복되면 시스템에서 호출합니다.
protected abstract  void paint(Graphics g, int w, int h)
          컨테이너 내에서 항목을 렌더링하기 위해 서브 클래스에 의해 구현됩니다.
protected  void pointerDragged(int x, int y)
          항목 내에서 포인터 끌기 작업(예: 누르고 놓기 전의 펜 모션)이 발생하면 시스템에서 호출합니다.
protected  void pointerPressed(int x, int y)
          항목 내에서 포인터 내리기 작업(예: 펜 탭)이 발생하면 시스템에서 호출합니다.
protected  void pointerReleased(int x, int y)
          항목 내에서 포인터 내리기 작업이 발생한 다음 포인터 올리기 작업(예: 펜 리프트)이 발생하면 시스템에서 호출합니다.
protected  void repaint()
          항목 다시 그리기를 요청하기 위해 서브 클래스 코드에 의해 호출됩니다.
protected  void repaint(int x, int y, int w, int h)
          항목의 지정된 직사각형 영역을 다시 그리도록 요청하기 위해 서브 클래스 코드에 의해 호출됩니다.
protected  void showNotify()
          이전에는 완전히 표시되지 않았지만 현재 부분적으로 표시되는 항목을 알리기 위해 시스템에서 호출합니다.
protected  void sizeChanged(int w, int h)
          크기 변경 이벤트를 처리하기 위해 서브 클래스에 의해 구현됩니다.
protected  boolean traverse(int dir, int viewportWidth, int viewportHeight, int[] visRect_inout)
          순회가 항목 내에 들어갔거나 해당 항목 내에서 순회가 발생한 경우 시스템에 의해 호출됩니다.
protected  void traverseOut()
          순회가 항목을 벗어나 발생하면 시스템에서 호출합니다.
 
Methods inherited from class javax.microedition.lcdui.Item
addCommand, getLabel, getLayout, getMinimumHeight, getMinimumWidth, getPreferredHeight, getPreferredWidth, notifyStateChanged, removeCommand, setDefaultCommand, setItemCommandListener, setLabel, setLayout, setPreferredSize
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TRAVERSE_HORIZONTAL

protected static final int TRAVERSE_HORIZONTAL
CustomItem에 대한 수평 내부 순회 지원을 나타내는 상호 작용 모드 비트.

TRAVERSE_HORIZONTAL의 값은 1입니다.

See Also:
getInteractionModes(), traverse(int, int, int, int[]), Constant Field Values

TRAVERSE_VERTICAL

protected static final int TRAVERSE_VERTICAL
CustomItem에 대한 수직 내부 순회 지원을 나타내는 상호 작용 모드 비트.

TRAVERSE_VERTICAL의 값은 2입니다.

See Also:
getInteractionModes(), traverse(int, int, int, int[]), Constant Field Values

KEY_PRESS

protected static final int KEY_PRESS
키 누르기 이벤트 지원을 나타내는 상호 작용 모드 비트.

KEY_PRESS의 값은 4입니다.

See Also:
getInteractionModes(), keyPressed(int), Constant Field Values

KEY_RELEASE

protected static final int KEY_RELEASE
키 놓기 이벤트 지원을 나타내는 상호 작용 모드 비트.

KEY_RELEASE의 값은 8입니다.

See Also:
getInteractionModes(), keyReleased(int), Constant Field Values

KEY_REPEAT

protected static final int KEY_REPEAT
키 반복 이벤트 지원을 나타내는 상호 작용 모드 비트.

KEY_REPEAT의 값은 0x10입니다.

See Also:
getInteractionModes(), keyRepeated(int), Constant Field Values

POINTER_PRESS

protected static final int POINTER_PRESS
포인트 누르기 이벤트 지원을 나타내는 상호 작용 모드 비트.

POINTER_PRESS의 값은 0x20입니다.

See Also:
getInteractionModes(), pointerPressed(int, int), Constant Field Values

POINTER_RELEASE

protected static final int POINTER_RELEASE
포인트 놓기 이벤트 지원을 나타내는 상호 작용 모드 비트.

POINTER_RELEASE의 값은 0x40입니다.

See Also:
getInteractionModes(), pointerReleased(int, int), Constant Field Values

POINTER_DRAG

protected static final int POINTER_DRAG
포인트 끌기 이벤트 지원을 나타내는 상호 작용 모드 비트.

POINTER_DRAG의 값은 0x80입니다.

See Also:
getInteractionModes(), pointerDragged(int, int), Constant Field Values

NONE

protected static final int NONE
순회가 이 항목 내에 들어갔거나 위치가 변경되었음을 알리고 이 순회 이벤트와 관련된 특정 방향이 없음을 알리는 순회 방향에 대한 값.

NONE의 값은 0입니다.

See Also:
traverse(int, int, int, int[]), Constant Field Values
Constructor Detail

CustomItem

protected CustomItem(String label)
CustomItem 서브 클래스가 해당 레이블을 지정할 수 있게 하는 수퍼 클래스 구성자

Parameters:
label - CustomItem의 레이블
Method Detail

getInteractionModes

protected final int getInteractionModes()
사용 가능한 상호 작용 모드를 가져옵니다. 이 메소드는 장치에서 사용할 수 있는 입력 종류를 결정하기 위해 CustomItem 서브 클래스 코드에 의해 호출됩니다. 사용 가능한 모드는 시스템이 올바로 이동하기 위해 필요한 실제 장치의 하드웨어 키, 포인팅 장치의 존재 등, 여러 요인에 따라 달라질 수 있습니다. 자세한 내용은 상호 작용 모드를 참조하십시오. 이 메소드가 0을 반환하는 경우에는 항목 명령을 통한 상호 작용만 사용할 수 있습니다.

Returns:
사용 가능한 상호 작용 모드의 비트 마스크

getMinContentWidth

protected abstract int getMinContentWidth()
컨텐트 영역의 최소 너비를 픽셀 단위로 반환하기 위해 서브 클래스에 의해 구현됩니다. 이 메소드는 구현 시 레이아웃 알고리즘의 일부로 호출됩니다. 부여된 실제 너비는 sizeChangedpaint 메소드에서 보고됩니다.

Returns:
최소 내용 너비(픽셀 단위)

getMinContentHeight

protected abstract int getMinContentHeight()
컨텐트 영역의 최소 높이를 픽셀 단위로 반환하기 위해 서브 클래스에 의해 구현됩니다. 이 메소드는 구현 시 레이아웃 알고리즘의 일부로 호출됩니다. 부여된 실제 높이는 sizeChangedpaint 메소드에서 보고됩니다.

Returns:
최소 내용 높이(픽셀 단위)

getPrefContentWidth

protected abstract int getPrefContentWidth(int height)
컨텐트 영역의 기본 너비를 픽셀 단위로 반환하기 위해 서브 클래스에 의해 구현됩니다. 이 메소드는 구현 시 레이아웃 알고리즘의 일부로 호출됩니다.

height 매개 변수는 컨텐트 영역에 할당된 임시 높이입니다. 서브 클래스 코드는 기본 너비 계산에 이 값을 사용할 수 있습니다. 구현 시 높이에 임시 값을 할당하지 않은 경우 height 매개 변수는 -1이 됩니다. 그렇지 않고 응용 프로그램이 CustomItem의 높이를 잠근 경우 또는 이 메소드 호출 시점에 컨테이너의 레이아웃 알고리즘이 임시 높이를 이미 계산한 경우 height는 특정 값을 가집니다. 서브 클래스는 전달된 임시 높이나 반환된 기본 너비가 부여될 것이라고 가정하면 안 됩니다. 부여된 실제 크기는 sizeChangedpaint 메소드에서 보고됩니다.

Parameters:
height - 임시 컨텐트 높이(픽셀 단위), 또는 임시 높이가 계산되지 않은 경우 -1
Returns:
기본 컨텐트 너비(픽셀 단위)

getPrefContentHeight

protected abstract int getPrefContentHeight(int width)
컨텐트 영역의 기본 높이를 반환하기 위해 서브 클래스에 의해 구현됩니다. 이 메소드는 구현 시 레이아웃 알고리즘의 일부로 호출됩니다.

width 매개 변수는 컨텐트 영역에 할당된 임시 너비입니다. 서브 클래스 코드는 기본 높이를 계산할 때 이 값을 사용할 수 있습니다. 구현 시 너비에 임시 값을 할당하지 않은 경우 width 매개 변수는 -1이 됩니다. 그렇지 않고 응용 프로그램이 CustomItem의 너비를 잠근 경우 또는 이 메소드 호출 시점에 컨테이너의 레이아웃 알고리즘이 임시 너비를 이미 계산한 경우 width는 특정 값을 가집니다. 서브 클래스는 전달된 임시 너비나 반환된 기본 높이가 부여될 것이라고 가정하면 안 됩니다. 부여된 실제 크기는 sizeChangedpaint 메소드에서 보고됩니다.

Parameters:
width - 임시 컨텐트 너비(픽셀 단위), 또는 임시 너비가 계산되지 않은 경우 -1
Returns:
기본 컨텐트 높이(픽셀 단위)

sizeChanged

protected void sizeChanged(int w,
                           int h)
크기 변경 이벤트를 처리하기 위해 서브 클래스에 의해 구현됩니다. CustomItem의 컨텐트 영역 크기가 변경되면 시스템에서 이 메소드를 호출합니다.

CustomItem이 디스플레이에 표시되는 동안 크기가 변경되면 자동 다시 그리기 요청을 트리거할 수 있습니다. 이 경우 paint를 호출하기 전에 sizeChanged에 대한 호출이 먼저 발생합니다. CustomItem이 더 작아졌는데 CustomItem의 나머지 내용이 보존되어 있는 경우 구현 시 다시 그리기를 트리거하지 않도록 선택할 수 있습니다. 마찬가지로 CustomItem이 더 커지면 구현 시 새 영역에 대해서만 다시 그리기를 트리거하도록 선택할 수 있습니다. 두 경우 모두 보존된 내용이 CustomItem의 원점에 대해 고정된 상태로 있어야 합니다. 크기 변경이 CustomItem 내용에 있어 중요한 경우 응용 프로그램은 변경된 영역에 대해 다시 그리기 요청을 명시적으로 실행해야 합니다. 응용 프로그램의 다시 그리기 요청은 이미 보류 중인 다시 그리기 요청과 합쳐질 수 있으므로 다시 그리기를 여러 번 발생시키면 안 됩니다.

항목의 컨텐트 영역이 표시되지 않은 상태에서 크기가 변경되면 이 메소드에 대한 호출이 지연될 수 있습니다. 항목이 표시되지 않은 상태에서 크기가 변경된 경우 항목이 다시 표시될 때까지 sizeChanged가 한 번 이상 호출됩니다.

이 메소드의 기본 구현은 어떤 작업도 하지 않습니다.

Parameters:
w - 항목 컨텐트 영역의 새 너비
h - 항목 컨텐트 영역의 새 높이

invalidate

protected final void invalidate()
CustomItem의 크기와 순회 위치를 업데이트해야 한다는 것을 알립니다. 이 메소드는 구현 시 CustomItem 컨텐트 영역의 크기나 내부 순회 위치를 변경해야 할 수 있다는 것을 알리기 위해 CustomItem 서브 클래스 코드에 의해 호출됩니다. 이는 CustomItem의 내용이 수정될 때 자주 발생합니다. 이 메소드에 대한 호출은 즉시 결과를 반환하며 컨테이너 레이아웃 알고리즘이 향후의 특정 시점에 실행되도록 하므로 getMinContentHeight, getMinContentWidth, getPrefContentHeight, getPrefContentWidth, sizeChangedtraverse에 대한 호출이 발생할 수 있습니다. 레이아웃 작업의 결과로 다시 그리기가 필요한 경우 paint 메소드도 호출될 수 있습니다. CustomItem이 표시되지 않은 상태에서 컨텐트 크기가 무효화된 경우 해당 레이아웃 작업이 지연될 수 있습니다. invalidate가 호출될 때 CustomItem에 현재 순회 위치가 포함되어 있는 경우 traverse 메소드가 호출됩니다.


paint

protected abstract void paint(Graphics g,
                              int w,
                              int h)
컨테이너 내에서 항목을 렌더링하기 위해 서브 클래스에 의해 구현됩니다. 호출 시 Graphics 컨텍스트 대상은 이 CustomItem(또는 이 항목에 대한 백 버퍼)의 컨텐트 영역입니다. 컨텐트 영역의 왼쪽 위 모서리가 (0,0)에 오도록 Translation이 설정되며 클립은 그려지는 영역으로 설정됩니다. 응용 프로그램은 지정된 클립 영역 내의 모든 픽셀을 그려야 합니다. 항목은 클립 영역을 수정할 수 있지만 시스템은 항목의 컨텐트 영역 범위를 벗어나는 그리기 수정은 허용하지 말아야 합니다. 전달된 wh는 항목 컨텐트 영역의 너비와 높이입니다. 편의상 여기에 전달된 값은 sizeChanged()에 대한 최신 호출로 전달된 값과 항상 같습니다.

Graphics 객체의 다른 값은 다음과 같습니다.

이 항목에 대한 showNotify() 호출 다음 및 이 항목에 대한 후속 hideNotify() 호출 이전, 즉, 항목의 한 부분 이상이 실제로 디스플레이에서 표시될 때만 paint() 메소드가 호출됩니다. 그리고 항목의 너비와 높이가 모두 0보다 큰 경우에만 paint() 메소드가 호출됩니다.

Parameters:
g - 항목 렌더링에 사용될 Graphics 객체
w - 항목의 현재 너비(픽셀 단위)
h - 항목의 현재 높이(픽셀 단위)

repaint

protected final void repaint()
항목 다시 그리기를 요청하기 위해 서브 클래스 코드에 의해 호출됩니다. 이 항목을 디스플레이에서 표시할 수 있는 경우 다음에 CustomItem이 표시될 때 paint()에 대한 호출이 발생합니다. 항목의 내부 상태가 업데이트되어 해당 시각적 표현을 업데이트해야 하는 경우 CustomItem 서브 클래스에서 이 메소드를 호출해야 합니다.


repaint

protected final void repaint(int x,
                             int y,
                             int w,
                             int h)
항목의 지정된 직사각형 영역을 다시 그리도록 요청하기 위해 서브 클래스 코드에 의해 호출됩니다. 해당 영역이 디스플레이에서 표시되는 경우 지정된 직사각형 영역을 포함하도록 설정된 그래픽과 함께 paint에 대한 호출이 발생합니다. 해당 영역은 CustomItem의 컨텐트 영역에 상대적으로 지정됩니다. 항목의 내부 상태가 업데이트되고 시각적 표현의 일부만 업데이트해야 하는 경우 CustomItem은 이 메소드를 호출해야 합니다.

Parameters:
x - 업데이트할 직사각형 영역의 x 좌표
y - 업데이트할 직사각형 영역의 y 좌표
w - 업데이트할 직사각형 영역의 너비
h - 업데이트할 직사각형 영역의 높이

traverse

protected boolean traverse(int dir,
                           int viewportWidth,
                           int viewportHeight,
                           int[] visRect_inout)
순회가 항목 내에 들어갔거나 해당 항목 내에서 순회가 발생한 경우 시스템에 의해 호출됩니다. 순회의 방향과 항목의 가시적 직사각형이 메소드에 전달됩니다. 해당 메소드는 내부 순회 위치에 대한 상태 정보를 업데이트하고 이 위치와 관련된 영역을 나타내도록 반환 직사각형을 설정한 다음 true를 반환합니다. 또는 이 항목이 내부 순회를 지원하지 않거나 내부 순회가 항목의 끝에 도달하였으므로 가능하면 다음 항목으로 진행해야 함을 나타내려면 false를 반환해야 합니다.

구현 시 getInteractionModes 메소드에 의해 반환되는 값의 TRAVERSE_HORIZONTAL 또는 TRAVERSE_VERTICAL 비트 중 하나나 모두를 설정하여 CustomItem 내에서 내부 순회가 지원된다는 것을 나타냅니다. dir 매개 변수는 Canvas 게임 작업, Canvas.UP, Canvas.DOWN, Canvas.LEFTCanvas.RIGHT 또는 이 순회 이벤트와 연관된 특정 방향이 없음을 나타내는 NONE 값을 사용하여 순회의 방향을 나타냅니다. TRAVERSE_HORIZONTAL 비트를 설정한 경우 이는 순회 방향을 나타내기 위해 Canvas.LEFTCanvas.RIGHT 값이 사용됨을 나타냅니다. TRAVERSE_VERTICAL 비트가 설정된 경우 이는 순회 방향을 나타내기 위해 Canvas.UPCanvas.DOWN 값이 사용됨을 나타냅니다. 두 가지 비트가 모두 설정되어 있는 경우에는 해당 항목이 2차원 순회를 수행해야 함을 나타내기 위해 순회 방향에 4개의 방향 값이 모두 사용될 수 있습니다. dir 매개 변수는 TRAVERSE_VERTICALTRAVERSE_HORIZONTAL 비트의 모든 조합에 NONE 값을 가집니다.

순회 방향을 나타내기 위해 Canvas 게임 작업이 사용된 경우라도 이러한 게임 작업에 매핑된 키가 순회에 사용된다거나 해당 키가 순회에 사용된다는 것을 의미하지는 않습니다.

viewportWidthviewportHeight 매개 변수는 항목의 컨테이너가 해당 항목에 부여한 표시 가능 영역의 크기를 나타냅니다. 이는 언제든 표시할 수 있는 항목의 최대 영역을 나타냅니다.

visRect_inout 매개 변수는 정보를 이 메소드에 전달하고 이 메소드로부터 정보를 반환하기 위해 사용되며 int[4] 배열이어야 합니다. 이 배열의 정보는 [x,y,w,h] 형식의 직사각형으로 (x,y)는 항목의 원점에 상대적인 직사각형의 왼쪽 위 모서리 위치이며 (w,h)는 직사각형의 너비와 높이입니다. 이 배열에 놓이는 반환 값은 traverse() 메소드가 true를 반환하는 경우에만 중요합니다. traverse() 메소드가 false를 반환하면 이 값이 무시됩니다.

이 메소드가 호출될 때 visRect_inout 배열에는 현재 표시 가능한 항목의 영역을 나타내는 직사각형이 포함됩니다. 항목에서 표시되는 부분이 없는 경우(예: 오프스크린으로 스크롤된 경우) 이 영역은 0이 됩니다. 반환된 직사각형의 의미는 아래에 설명되어 있습니다.

CustomItem은 순회가 이 항목 내에 있는지 계속 추적해야 하며, 있다면 현재 내부 위치도 기록해야 합니다. 처음에 순회는 항목 밖에 있습니다. traverse() 메소드가 처음 호출된다는 것은 순회가 해당 항목에 들어갔음을 나타냅니다. 이 메소드에 대한 후속 호출은 순회가 이 항목 내에서 발생 중임을 나타냅니다. traverseOut 메소드가 호출될 때까지 순회는 항목 내에 남아 있습니다. CustomItem은 항목에 들어가는 순회를 항목 내에 있는 순회와 구별할 수 있도록 순회 상태를 추적해야 합니다.

순회가 항목에 들어가면 순회 코드는 자신의 내부 순회 위치를 항목 구조 및 순회 방향에 적합한 "처음" 위치로 초기화해야 합니다. 두 번째 정책의 예로 순회 방향이 DOWN인 경우 초기 위치는 항목의 최상위 내부 요소여야 합니다. 마찬가지로 순회 방향이 UP인 경우 초기 위치는 항목의 최하위 요소여야 합니다. CustomItem은 주축이 순회의 축에 직각인 경우에도 "처음" 위치를 선택해야 합니다. 예를 들어, 지원되는 순회 모드가 TRAVERSE_VERTICAL인 경우에도 CustomItem은 요소의 가로 행으로 구성됩니다. 초기 순회 방향이 DOWN인 경우 초기 위치는 맨 왼쪽 요소이고 초기 순회 방향이 UP인 경우 초기 위치는 맨 오른쪽 요소일 수 있습니다.

순회는 특정 방향을 지정하지 않고도 항목에 들어갈 수 있는데 이 경우 순회 방향은 NONE이 됩니다. 이는 사용자가 항목을 직접 선택하거나(예: 포인팅 장치 사용) 항목이 포함하는 Form이 현재이기 때문에 항목에 초점이 맞춰지는 경우에 발생할 수 있습니다. CustomItem은 기본 순회 위치를 선택해야 합니다. CustomItem이 이전 위치로 순회되고 CustomItem의 사용자 인터페이스에 적합한 경우 이전 순회 위치가 복구되어야 합니다.

순회가 항목 내에서 발생하면 내부 순회 위치는 순회 방향의 다음 적절한 영역으로 이동해야 합니다. 항목은 아래에 설명된 대로 업데이트된 내부 순회 위치를 visRect_inout 반환 매개 변수에 보고한 다음 true를 반환해야 합니다. 항목에서는 일반적으로 사용자에게 내부 순회 위치를 표시하기 위해 강조 표시를 사용합니다. 따라서 항목은 일반적으로 각 순회 이벤트 다음에 이전 및 새 순회 위치 다시 그리기를 요청합니다. 항목이 다시 그리기를 요청한 영역이 visRect_inout 직사각형에 반환된 영역과 같아야 한다는 요구 사항은 없습니다. 시스템은 다시 그리기 요청을 스크롤의 결과로 발생할 수 있는 추가적인 다시 그리기와 결합합니다.

순회가 이미 CustomItem 내에 있으면 NONE의 방향으로 traverse() 메소드가 호출될 수 있습니다. 이는 invalidate() 메소드를 호출한 CustomItem 서브 클래스 코드에 대한 응답으로 발생합니다. 이 경우 CustomItem은 단순히 순회 위치의 현재 개념을 반환하기만 하면 됩니다. 내용 변경 등으로 CustomItem이 순회 위치를 자발적으로 업데이트해야 하는 경우(순회 이벤트에 대한 응답으로가 아닌) 이 기법이 유용합니다.

순회 이벤트가 논리적으로 순회를 해당 항목의 범위를 벗어나게 만들 정도의 내부 순회 위치인 경우 항목은 traverse() 메소드에서 false를 반환해야 합니다. 예를 들어, 현재 순회 위치가 해당 항목 맨 아래의 내부 요소이며 순회 방향이 DOWN인 경우 traverse() 메소드는 false만 반환해야 합니다. 이 경우 메소드는 visRect_inout 배열의 값을 업데이트하지 않아도 됩니다. 항목은 자신의 내부 순회 위치를 변경하지 않은 상태로 두어야 하며 강조 표시를 업데이트하기 위해 다시 그리기를 요청하지 말아야 합니다. traverseOut() 메소드가 호출될 때까지 이러한 작업은 연기되어야 합니다. 순회가 실제로 항목을 떠나면 시스템은 traverseOut() 메소드를 호출합니다. traverse()false를 반환하더라도 항목이 Form의 가장자리에 있거나 순회를 적용할 수 있는 다른 항목이 없는 경우 시스템은 traverseOut() 메소드를 호출하지 않을 수 있습니다. traverse() 메소드가 false를 반환하더라도 순회 위치는 여전히 이 항목 내에 있습니다. traverseOut()이 호출될 때까지 이 항목 내에 남아 있습니다.

항목으로 들어감을 의미하는 초기 traverse() 호출과 항목 내의 순회를 의미하는 후속 호출 간에는 미묘한 차이가 있습니다. 초기 호출에 대한 반환 값 false는 항목이 전혀 내부 순회를 수행하지 않음을 나타냅니다. 반면 후속 호출에 대해 false를 반환하면 순회가 이 항목 안에 있으며 지금 나가지 않을 것임을 나타냅니다.

visRect_inout 배열에 반환된 직사각형의 너비와 높이는 스크롤 및 그리기 목적으로 Form에서 사용합니다. Form은 항상 (x,y) 위치에서 지정한 대로 이 직사각형의 왼쪽 위 모서리가 표시되도록 항목을 배치해야 합니다. 그리고 항목은 너비와 높이를 지정할 수도 있습니다. 이 경우 Form은 가능한 한 이 직사각형의 많은 부분이 표시되도록 항목을 배치하려고 시도합니다. 너비와 높이가 뷰포트 크기보다 큰 경우 이 직사각형의 아래와 오른쪽 부분은 사용자에게 표시되지 않을 것입니다. 따라서 반환되는 직사각형은 일반적으로 항목 내부 요소 중 하나의 크기와 위치를 나타내며 또한 요소의 강조 표시가 그려질 위치와 반드시는 아니지만 대체로 일치합니다. 0인 너비와 높이 값은 유효하며 특별히 처리되지 않습니다. 음수인 너비 및 높이 값은 0과 마찬가지로 처리됩니다.

순회 방향과 관련하여 visRect_inout 배열에 반환되는 직사각형 위치에 대한 요구 사항은 없습니다. 예를 들어, CustomItem이 내부 스크롤을 구현하는 경우 반환되는 직사각형이 이전 위치보다 위에 있도록 DOWN의 순회 방향으로 인해 항목의 내용이 충분히 위로 스크롤됩니다. CustomItem 서브 클래스가 한 방향으로 계속 순회하면 결국 항목의 끝에 도달하고, 그 후 이 메소드에서 false를 반환하여 순회가 항목의 범위를 벗어납니다. CustomItem이 "wraparound" 동작(예: 최하위 요소에서 아래로 순회하여 순회 위치를 최상위 요소로 이동)을 구현하면 항목 내에 순회가 트랩되므로 이 동작을 구현하면 안 됩니다.

CustomItem이 컨테이너 뷰포트보다 작은 내부 요소로 구성된 경우 반환된 사각형은 이러한 요소 중 하나와 같은 크기여야 합니다. 하지만 CustomItem에는 요소가 뷰포트보다 큰 컨텐트가 있거나 내부 구조가 없는 컨텐트가 있을 수 있습니다. 이러한 두 가지 경우 모두 항목은 사용자에게 표시되어야 할 컨텐트 영역의 개념을 가장 잘 나타내는 직사각형을 반환해야 합니다. 순회가 발생하면 항목은 뷰포트 크기를 기반으로 하여 순회 위치를 이동해야 합니다. 예를 들어, 뷰포트의 높이가 80 픽셀이고 순회가 아래로 발생하는 경우, 컨텐트의 10 픽셀이 겹친 상태에서 다음 내용을 화면 전체에 표시하려면 순회 위치를 70 픽셀 아래로 이동해야 합니다.

구현 시 제공하는 순회 모드에 상관없이 모든 내부 순회 위치는 도달할 수 있는 위치여야 합니다. 이는 구현 시 1차원 순회를 제공하는 경우 CustomItem이 자신의 내부 위치를 선형화해야 함을 의미합니다. 예를 들어, 순회 모드가 TRAVERSE_VERTICAL이고 CustomItem이 요소의 가로 행으로 구성된다고 가정합니다. 순회 방향이 DOWN이면 내부 순회 위치는 오른쪽으로 이동해야 하며 순회 방향이 UP인 경우 내부 순회 위치는 왼쪽으로 이동해야 합니다(앞의 규칙은 왼쪽에서 오른쪽으로 쓰는 텍스트를 사용하는 언어에 적합하며, 그 반대 규칙은 오른쪽에서 왼쪽으로 쓰는 텍스트를 사용하는 언어에서 사용). 순회 모드가 TRAVERSE_VERTICAL이고 CustomItem이 요소 격자로 구성된 유사한 예를 고려해봅시다. 순회 방향 DOWN은 위치가 행의 가장 오른쪽 요소에 도달하면 다음 아래 행으로 이동하여 각 행을 지나 왼쪽으로 진행합니다.

구현 시 2차원 순회를 제공하지만 CustomItem이 1차원인 경우 항목 축과 일렬인 순회 방향은 항목 내에서 순회해야 하며 순회 방향이 항목 축에 직각이면 이 메소드에서 false를 반환하여 순회는 즉시 항목의 범위를 벗어납니다. 예를 들어, CustomItem이 요소의 수직 스택을 구현하고 있으며 순회가 이미 항목 내부에 있다고 가정하면 UP이나 DOWN 방향으로 순회 이벤트를 수신한 경우 traverse() 메소드는 다음 요소로 이동한 다음 true를 반환해야 합니다. 반면 RIGHTLEFT 방향으로 순회 이벤트를 수신한 경우 순회가 항목의 범위를 즉시 벗어나도록 traverse() 메소드는 항상 false를 반환해야 합니다. 내부 순회를 구현하는 항목은 항상 항목을 받아들여야 합니다. 즉 traverse()에 대한 초기 호출은 순회 방향의 축에 관계없이 true를 반환해야 합니다.

순회가 항목에 들어갈 때 traverse() 메소드가 false를 반환하는 경우 항목이 내부 순회를 지원하는 시스템을 가리킵니다. 이 경우 항목은 고유 강조 표시를 수행하지 않아야 하며 시스템은 항목 외부에 있는 플랫폼에 적합한 강조 표시를 수행해야 합니다.

traverse() 메소드의 기본 구현은 항상 false를 반환합니다.

Parameters:
dir - 순회 방향, Canvas.UP, Canvas.DOWN, Canvas.LEFT, Canvas.RIGHT 또는 NONE 중 하나
viewportWidth - 컨테이너 뷰포트의 너비
viewportHeight - 컨테이너 뷰포트의 높이
visRect_inout - 표시 가능한 직사각형을 메소드에 전달한 다음 메소드로부터 업데이트된 순회 직사각형을 반환합니다.
Returns:
내부 순회가 발생한 경우 true, 순회가 범위를 벗어나는 경우 false
See Also:
getInteractionModes(), traverseOut(), TRAVERSE_HORIZONTAL, TRAVERSE_VERTICAL

traverseOut

protected void traverseOut()
순회가 항목을 벗어나 발생하면 시스템에서 호출합니다. 사용자가 다른 항목과 상호 작용을 시작하거나 이 항목을 포함하는 Form이 더 이상 현재가 아닌 경우 traverse()에 대한 이전 호출에 대해 false를 반환한 CustomItem에 대한 응답으로 발생합니다. 내부 순회를 나타내기 위해 CustomItem이 강조 표시를 사용하는 경우 CustomItem은 해당 상태의 강조 표시를 해제한 다음 다시 그리기를 요청합니다(항목이 더 이상 표시되지 않으면 그리기가 발생하지 않음).

See Also:
getInteractionModes(), traverse(int, int, int, int[]), TRAVERSE_HORIZONTAL, TRAVERSE_VERTICAL

keyPressed

protected void keyPressed(int keyCode)
키를 누를 때 시스템에서 호출합니다. 구현 시 getInteractionModes 메소드가 반환하는 값에서 KEY_PRESS 비트를 설정하여 키 누르기 이벤트 전달에 대한 지원을 나타냅니다.

Parameters:
keyCode - 누른 키의 키 코드
See Also:
getInteractionModes()

keyReleased

protected void keyReleased(int keyCode)
키를 놓을 때 시스템에서 호출합니다. 구현 시 getInteractionModes 메소드가 반환하는 값에서 KEY_RELEASE 비트를 설정하여 키 놓기 이벤트 전달에 대한 지원을 나타냅니다.

Parameters:
keyCode - 놓은 키의 키 코드
See Also:
getInteractionModes()

keyRepeated

protected void keyRepeated(int keyCode)
키가 반복되면 시스템에서 호출합니다. 구현 시 getInteractionModes 메소드가 반환하는 값에서 KEY_REPEAT 비트를 설정하여 키 반복 이벤트 전달에 대한 지원을 나타냅니다.

Parameters:
keyCode - 반복된 키의 키 코드
See Also:
getInteractionModes()

getGameAction

public int getGameAction(int keyCode)
장치의 지정된 키 코드와 관련된 게임 작업을 가져옵니다. 이 키 코드와 관련된 게임 작업이 없는 경우 0을 반환합니다. 게임 작업에 대한 자세한 내용은 Canvas 클래스의 게임 작업 절을 참조하십시오.

게임 작업에 대한 키 코드 매핑은 CustomItemCanvas가 다를 수 있습니다.

Parameters:
keyCode - 키 코드
Returns:
이 키에 해당하는 게임 작업, 또는 이러한 게임 작업이 없는 경우 0
Throws:
IllegalArgumentException - keyCode가 유효한 키 코드가 아닌 경우

pointerPressed

protected void pointerPressed(int x,
                              int y)
항목 내에서 포인터 내리기 작업(예: 펜 탭)이 발생하면 시스템에서 호출합니다. (x,y) 좌표는 항목의 원점에 상대적이며 항상 항목 내의 위치를 나타냅니다. 구현 시 getInteractionModes 메소드가 반환하는 값에서 POINTER_PRESS 비트를 설정하여 포인터 누르기 이벤트 전달에 대한 지원을 나타냅니다.

Parameters:
x - 포인터 내리기의 x 좌표
y - 포인터 내리기의 y 좌표
See Also:
getInteractionModes()

pointerReleased

protected void pointerReleased(int x,
                               int y)
항목 내에서 포인터 내리기 작업이 발생한 다음 포인터 올리기 작업(예: 펜 리프트)이 발생하면 시스템에서 호출합니다. (x,y) 좌표는 항목의 원점에 상대적입니다. 놓기가 발생했을 때 포인터가 항목을 벗어나더라도 구현 시 포인터 놓기 이벤트를 항목에 전달해야 합니다. 이 경우 (x,y) 좌표는 항목 범위를 벗어나는 위치를 나타냅니다. 구현 시 getInteractionModes 메소드가 반환하는 값에서 POINTER_RELEASE 비트를 설정하여 포인터 놓기 이벤트 전달에 대한 지원을 나타냅니다.

Parameters:
x - 포인터 올리기의 x 좌표
y - 포인터 내리기의 x 좌표
See Also:
getInteractionModes()

pointerDragged

protected void pointerDragged(int x,
                              int y)
항목 내에서 포인터 끌기 작업(예: 누르고 놓기 전의 펜 모션)이 발생하면 시스템에서 호출합니다. (x,y) 좌표는 항목의 원점에 상대적입니다. 포인터가 항목 외부로 이동되더라도 구현 시 포인터 끌기 이벤트를 항목에 전달해야 합니다. 이 경우 (x,y) 좌표는 항목 범위를 벗어나는 위치를 나타냅니다. 구현 시 getInteractionModes 메소드가 반환하는 값에서 POINTER_DRAG 비트를 설정하여 포인터 끌기 이벤트 전달에 대한 지원을 나타냅니다.

Parameters:
x - 포인터 끌기의 x 좌표
y - 포인터 끌기의 y 좌표
See Also:
getInteractionModes()

showNotify

protected void showNotify()
이전에는 완전히 표시되지 않았지만 현재 부분적으로 표시되는 항목을 알리기 위해 시스템에서 호출합니다. showNotify()가 호출된 다음 항목은 paint() 호출을 받습니다.

이 메소드의 기본 구현은 어떤 작업도 하지 않습니다.


hideNotify

protected void hideNotify()
이전에는 부분이라도 표시되었지만 현재는 전혀 표시되지 않는 항목을 알리기 위해 시스템에서 호출합니다. showNotify()가 다시 호출될 때까지는 이 항목에 대한 paint()를 호출하지 않습니다.

이 메소드의 기본 구현은 어떤 작업도 하지 않습니다.


MID 프로필

의견이나 제안 사항 보내기 MID 프로필 사양 버전 2.0
Java는 미국 및 다른 국가에서 Sun Microsystems, Inc.의 상표 또는 등록 상표입니다. Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. 모든 권리는 저작권자의 소유입니다.