Presentation is loading. Please wait.

Presentation is loading. Please wait.

4장 컴포넌트 (I) org.kwis.msp.lwc.

Similar presentations


Presentation on theme: "4장 컴포넌트 (I) org.kwis.msp.lwc."— Presentation transcript:

1 4장 컴포넌트 (I) org.kwis.msp.lwc

2 개요 Component 클래스 ContainerComponent shellComponent/formComponent
LabelComponent ListComponent, ListItemComponent ButtonComponent DialogComponent checkboxComponent AnnumciatorComponent TextComponent/Textbox/Textfield

3 lwc 다이어그램

4 Component클래스 계층도 | +--org.kwis.msp.lwc.Component
java.lang.Object | +--org.kwis.msp.lwc.Component Direct Known Subclasses: ButtonComponent, ComboComponent, CommandBarComponent, ContainerComponent, DateFieldComponent, ImageComponent, LabelComponent, ProgressComponent, ScrollbarComponent, TextComponent, TickerComponent public abstract class Component extends Object

5 Component클래스 가장 기본이 되는 화면에 보여지는 클래스
위치와 크기를 가지며, 사용자의 입력을 받아서 적절한 행동을 하는 클래스 화면에 보여지는 모든 UI 컴포넌트는 이 클래스를 상속 받아서 구현되어야 한다. Component 클래스를 상속 받은 자식 클래스들의 상위 부모 컴포넌트 상에서의 위치와 폭과 넓이를 가지며, 배경색과 컴포넌트의 특성을 가진다.

6 Component클래스(계속) Component클래스는 항상 상위 부모가 있어야 한다.
상위 부모가 없어도 되는 Component ShellComponent 화면에 적어도 하나 이상의 ShellComponent 가 있어야, Component가 화면에 보이게 된다. 컴포넌트는 addComponent한 후에 다른 부모 컴포넌트에 더 이상 addComponent할 수 없다.

7 Component 주요 필드 public static final int LAYOUT_LEFT
public static final int LAYOUT_RIGHT Component의 우측 정렬 값 public static final int LAYOUT_HCENTER Component의 가운데 수평 정렬 값 public static final int LAYOUT_TOP Component의 위쪽 정렬 값. public static final int LAYOUT_BOTTOM Component의 아래쪽 정렬 값 public static final int LAYOUT_VCENTER Component의 가운데 수직 정렬 값.

8 Component 주요 method protected boolean keyNotify(int type, int chr)
키 입력을 받으면 호출된다. protected void showNotify(boolean bShow) 화면의 내용이 보이면 호출된다. public void repaint() 컴포넌트 전체를 갱신한다. public boolean isShown() 현재 컴포넌트가 보이는지 안 보이는지 여부를 돌려준다. public Card getCard() 현재 컴포넌트에 연결된 카드를 돌려준다. public void setEventListener(EventListener listener, Object obj) 이벤트 Listener를 등록한다.

9 ContainerComponent java.lang.Object | +--org.kwis.msp.lwc.Component
+--org.kwis.msp.lwc.ContainerComponent Direct Known Subclasses: FormComponent, ShellComponent public abstract class ContainerComponent extends Component

10 ContainerComponent 다른 컴포넌트의 상위 부모 컴포넌트가 될 수 있는 컴포넌트.
자식 컴포넌트의 위치와 크기를 결정 및 포커스 관리. addComponent함수로 자식 컴포넌트로 등록. removeComponent함수로 삭제.

11 ContainerComponent 주요 method
public void addComponent(int index, Component cmp) 자식 컴포넌트를 하나 추가한다. 지정한 위치에 cmp가 가리키는 컴포넌트를 추가한다. public int addComponent(Component cmp) 자식 컴포넌트를 하나 추가한다. public void removeComponent(Component cmp) 지정된 컴포넌트를 삭제한다. public void removeAllComponents() 모든 컴포넌트를 삭제한다.

12 ShellComponent public class ShellComponent extends ContainerComponent
Card와의 연결을 해주며, 제목과 명령 입력 컴포넌트와 작업 컴포넌트를 가진다. UI컴포넌트를 화면에 보여주기 위해서 맨 상단에는 이 컴포넌트를 사용해야 한다. ShellComponent는 AddComponent를 통해서 하나의 작업 컴포넌트 만을 가질 수 있다.

13 ShellComponent 단 하나의 자식컴포넌트를 갖는 ShellComponent
ShellComponent s_test=new ShellComponent(); s_test.addComponent(new ButtonComponent("딱! 하나",null)); s_test.addComponent(new ButtonComponent("Error!!!",null)); // IllegalArgumentException ShellComponent의 addComponent를 두 번 이상 호출하면 IllegalArgumentException이 발생.

14 FormComponent 다양한 컴포넌트를 일렬로 배열하여 화면을 구성하는 컴포넌트.
FormComponent는ContainerComponent를 확장한 자식 컴포넌트. 각 컴포넌트들의 배치와 스크롤 여부를 관리.

15 FormComponent 자식 컴포넌트들의 포커스 이동은 상하만 동작하도록 되어 있다.
UP/DOWN키를 사용하여 자식 컴포넌트들의 포커스 이동을 할 수 있다. 내부의 컴포넌트가 많으면 자동적으로 scrollbar가 생성되도록 되어 있다.

16 FormComponent 하나 이상의 자식 컴포넌트를 갖는 FormComponent
FormComponent f_test=new FormComponent(); f_test.addComponent(new ButtomComponent(“하나”,null)); f_test.addComponent(new ButtomComponent(“둘”,null));

17 ShellComponent 주요 생성자 public ShellComponent()
public ShellComponent(int x, int y, int w, int h) 지정한 크기로 ShellComponent를 생성한다. public ShellComponent(int x, int y, int w, int h, boolean bTrans) 지정한 크기로 생성되며 bTrans의 여부에 따라서 투명한 Shell이 될 수도 있다. 매개변수 x 컴포넌트 화면상의 위치. y 컴포넌트 화면상의 위치. w 컴포넌트 화면상에서의 폭. h 컴포넌트 화면상에서의 높이. bTrans 컴포넌트 투명 여부.

18 ShellComponent 주요 method
public void layout() 하위 컴포넌트의 크기와 위치를 결정한다. public void repaint(int x, int y, int w, int h) 화면의 내용을 갱신할 필요가 있을 때 부른다. public void show() 컴포넌트를 화면상에 보여준다. public void hide() 컴포넌트를 감춘다. public boolean isShown() 현재 컴포넌트가 보이는지 안 보이는지 여부를 돌려준다.

19 ShellComponent 주요 method
public void configure(int x, int y, int w, int h, int mask) 컴포넌트의 위치나 크기를 변경한다. public int getX() x축의 좌표를 돌려준다. public int getY() y축의 좌표를 돌려준다. public void showNotify(boolean b) 화면의 내용이 보이면 호출된다. public void serviceRepaints() 갱신된 내용을 즉시 화면에 출력해준다.

20 ShellComponent 주요 method
public void addComponent(int index, Component cmp) 지정한 위치에 cmp가 가리키는 컴포넌트를 추가한다. public int addComponent(Component cmp) 자식 컴포넌트를 하나 추가한다. protected boolean processEvent(int type, int subtype, int param1, int param2) 이벤트를 처리한다. public void setTitle(Component cmp) 타이틀을 지정한다. public Component getWorkComponent() 지정된 Component 돌려준다.

21 ShellComponent 주요 method
public void setWorkComponent(Component cmp) Component를 설정 한다 public void removeComponent(Component cmp) 지정된 컴포넌트를 삭제한다. public void setCommand(Component cmp, boolean bGrab) 커맨드를 지정한다. public void setTitle(String str) 타이틀 문자열을 지정한다. public Card getCard() 현재 컴포넌트에 연결된 카드를 돌려준다.

22 ShellComponent 주요 method
public void grabKey(int key) 특정 키 코드를 그랩(Grab)하여 GrabKeyListener에게 보낸다. public void setGrabKeyListener(GrabKeyListener listener, Object obj) 그랩 키 Listener를 등록한다. protected boolean keyNotify(int type, int chr) 키 입력을 받으면 호출된다. protected void controlInset(boolean flag) ContainerComponent에서 사용할 테두리 두께 값을 제어한다.

23 FormComponent 주요 생성자 public FormComponent() 폼 컴포넌트를 생성한다.
Public FormComponent(boolean bVertical) 수직 혹은 수평 폼 컴포넌트를 생성한다.

24 예제 예제 4.1 예제 4.2 예제 4.3

25 LabelComponent 문자열을 보여주는 컴포넌트. 사용자에게 보여줄 때 문자열과 이미지를 포맷팅해서 출력해 준다.
LabelComponent는 setLayout(int)를 사용하여 정렬형태를 지정 할 수 있다. LabelComponent에서 사용되는 정렬형태는 Component에서 제공하는 정렬 조합 규칙을 참조하고 있다. 참고: LabelComponent생성시 기본 정렬 형태는 LAYOUT_LEFT

26 정렬 조합 규칙 좌우정렬: LAYOUT_LEFT LAYOUT_RIGHT LAYOUT_HCENTER 상하정렬:
LAYOUT_TOP LAYOUT_BOTTOM LAYOUT_VCENTER

27 LabelComponent 주요 생성자 public LabelComponent()
LabelCompoent를 생성한다. public LabelComponent(String str) 주어진 문자열로 LabelComponent를 생성한다. public LabelComponent(String str, Image img) 주어진 문자열과 이미지로 LabelComponent를생성한다.

28 LabelComponent 주요 method
public void setLabel(String str) 내부 문자열을 주어진 문자열 값으로 지정한다. public void setImage(Image img) 내부 이미지를 주어진 이미지로 지정한다. public String getLabel() 내부 문자열을 가져온다. public Image getImage() 내부 이미지를 가져온다. public void setFont(Font font) 폰트를 지정한다. public Font getFont() 폰트를 얻어온다. public void setLayout(int layout) 레이블의 정렬 형태를 지정한다.

29 예제 예제 4.4

30 ListComponent/ListItemComponent
ListComponent는 FormComponent를 상속하여 구현된 클래스 이 다른 ContainerComponent와는 달리 ListItemComponent만을 추가할 수 있다.

31 ListComponent ListItemComponent는 3가지 타입이 있다. SELECT_IMPLICIT
SELECT_MULTIPLE SELECT_EXCLUSIVE

32 ListItemComponent의 3가지 타입
SELECT_EXCLUSIVE SELECT_IMPLICIT SELECT_MULTIPLE

33 ListComponent 주요 method
public int append(String str, Image img) ListComponent에 주어진 이미지와 문자열로 ListItemComponent를 생성하여 추가한다. public void addComponent(int index, Component cmp) index위치에 컴포넌트를 하나 추가한다. public int addComponent(Component cmp) 맨 위에 자식 컴포넌트를 추가한다. public void setComponent(int index, Component cmp) 자식 컴포넌트를 하나 대치한다. public int insert(int index, String str, Image img) 해당 위치에 주어진 문자열과 이미지로 ListItemComponent을 생성하여 추가한다.

34 ListComponent 주요 method
public void set(int index, String str, Image img) 해당 위치에 주어진 문자열과 이미지로 ListItemComponent을 생성 하여 새로 지정한다. public String getString(int index) 주어진 위치에 있는 ListItemComponent의 문자열을 얻어온다. public Image getImage(int index) 주어진 위치에 있는 ListItemComponent의 이미지를 얻어온다. public boolean isSelected(int index) 주어진 인덱스의 항목이 현재 선택되어 있는지의 여부를 알려준다. public int[] getSelectedIndexs() ListComponent의 항목들 중 현재 선택되어 있는 항목들의 인덱스를 얻어온다. public int getSelectedIndex() ListComponent의 항목들 중 현재 선택되어 있는 항목의 인덱스를 얻어온다.

35 ListComponent 주요 method
public void setActionListener(ActionListener l, Object o) ListComponent에 ActionListener를 등록한다. public void setChangeListener(ChangeListener l, Object o) ListComponent에 ChangeListener를 등록한다. protected boolean keyNotify(int type, int key) 키 입력을 받으면 호출된다. public void select(int index) 주어진 위치의 항목을 선택한다. public void select(ListItemComponent cmpp) 주어진 항목의 선택상태를 변경한다.

36 ListComponent 주요 method
public void controlNumber(boolean showImage) 번호키 컨트롤 여부를 지정한다. public boolean isControlNumber() 번호키 컨트롤 상태를 반환한다. protected Component getNextTraversalComponent() 포커스 가질 수 있는 다음 컴포넌트를 돌려준다. protected Component getPrevTraversalComponent() 포커스 가질 수 있는 이전 컴포넌트를 돌려준다.

37 ListItemComponent ListComponent에 추가되어 사용되는 컴포넌트
LabelComponent를 상속받아 구현한 클래스. LabelComponent와 기본 기능이 비슷하다.

38 ListItemComponent 주요 method
public void setState(boolean bState) ListItemComponent의 선택 상태를 지정한다. public boolean getState() 현재의 선택 상태를 얻어온다.

39 예제 4.5

40 ButtonComponent 버튼 컴포넌트.
"select"키가 눌렸다 떼어 졌을 때 자신에게 등록된 ActionListener를 호출한다. 버튼은 문자열과 이미지로 구성된다.

41 interface ActionListener
public interface ActionListener public void action(Component cmp, Object obj) 버튼이나 리스트에서 action이 발생하면 불린다. 매개변수 cmp action이 발생한 컴포넌트 obj setActionListener시에 넣은 Object 인수 어떤 액션이 발생하면 불리는 인터페이스이다. 버튼과 같이 사용자가 누르는 경우에 발생하는 이벤트를 처리하는 Listener이다.

42 ButtonComponent 주요 method
public void setActionListener(ActionListener l, Object obj) ActionListener를 등록한다. public void setFont(Font ft) 버튼의 폰트를 설정한다. public Font getFont() 폰트를 돌려준다. public boolean keyNotify(int type, int ch) 키 입력을 받으면 호출된다. public void setString(String str) 버튼의 문자열을 지정한다

43 ButtonComponent 주요 method
public String getString() 현재 버튼의 문자열을 돌려준다. public Image getImage() 현재 버튼의 이미지를 돌려준다. public void setImage(Image img) 버튼의 이미지를 지정한다. protected void layout() 하위 컴포넌트의 크기와 위치를 결정한다.

44 예제 4.6

45 DialogComponent java.lang.Object | +--org.kwis.msp.lwc.Component
+--org.kwis.msp.lwc.ContainerComponent +--org.kwis.msp.lwc.ShellComponent +--org.kwis.msp.lwc.DialogComponent public class DialogComponent extends ShellComponent 다양한 형태의 다이알로그박스를 지원하기 위해서 만들어진 컴포넌트 타이틀영역과 데이타 영역, 버튼영역으로 구성

46 DialogComponent의 예

47 DialogComponent DialogComponent에서는 기본적으로 3가지 타입을 지원. TYPE_OK 타입
TYPE_OK_CANCEL 타입 TYPE_NONE 타입 TYPE_NONE의 경우 디폴트로 3초. 이 값을 setTimeout(int)메소드를 통해 지정할 수 있다.

48 DialogComponent 주요 생성자
public DialogComponent(int type) 컴포넌트와 타이틀이 없고 주어진 타입을 가지는 새로운 DialogComponent를 생성. public DialogComponent(Component cmp, String title, int type) 주어진 컴포넌트, 타이틀, 타입으로 새로운 DialogComponent를 생성. public DialogComponent(Component cmp, String ttl, int type, int x, int y, int w, int h) 주어진 값으로 새로운 DialogComponent를 생성. 매개변수 cmp 대화상자의 내용을 담은 컴포넌트 혹은 null title 대화상자의 타이틀 혹은 null type 대화상자의 형태. TYPE_NONE,TYPE_OK ,TYPE_OK_CANCEL 중에서 지정 x 대화상자의 x좌표 y 대화상자의 y좌표 w 대화상자의 넓이 값 h 대화상자의 높이 값

49 DialogComponent 주요 필드 public static final int TYPE_NONE
버튼이 없는 형태의 다이얼로그타입. public static final int TYPE_OK OK 버튼만 있는 형태의 다이얼로그타입. public static final int TYPE_OK_CANCEL OK, CANCEL 버튼이 있는 형태의 다이얼로그타입. public static final int DLG_TIMEOUT doModal시 반환되는 값으로 TIMEOUT되어 종료된 것을 나타냄. public static final int DLG_OK doModal시 반환되는 값으로 OK버튼이 선택되었음을 나타냄.

50 DialogComponent 주요 필드 public static final int DLG_CANCEL
doModal시 반환되는 값으로 CANCEL버튼이 선택되었음을 나타냄. public static final int OK_BUTTON OK 버튼타입. public static final int CANCEL_BUTTON CANCEL버튼타입. public static final int TIMEOUT_INFINITE timeout 값 중 무한대의 값을 나타냄. protected int actionState 현재 어떤 액션(이벤트)이 발생한 것인지를 기억하는 필드.

51 DialogComponent 주요 method
public void setButtonString(int buttonType, String buttonStr) 버튼의 문자를 지정한다. public void setType(int type) DialogComponent의 타입을 지정한다. public void setTimeout(int timeout) DialogComponent를 화면에 보여줄 타임아웃 시간을 지정한다. public int doModal() DialogComponent를 화면에 나타나게 한다. public void show() 컴포넌트를 화면상에 보여준다. public int getActionState() DialogComponent에서 발생한 마지막 액션을 얻어온다.

52 예제 4.7

53 CheckboxComponent class CheckboxComponent extends LabelComponent
개별 선택 가능한 체크버튼과 라디오버튼을 만들기 위한 클래스 CheckboxGroup의 지정이 없이 생성되는CheckboxComponent 의 경우는 독립적인 체크박스로 동작 CheckboxGroup이 지정되는 경우 같은 CheckboxGroup으로 묶여진 CheckboxComponent들은 라디오버튼으로 동작

54 CheckboxComponent 사용 예

55 CheckboxComponent 주요 method
public void setState(boolean bState) CheckboxComponent의 선택상태를 변경한다. public void paintContent(Graphics g) 내부를 칠한다. public boolean keyNotify(int type, int key) 키 입력을 받으면 호출된다. public void setChangeListener(ChangeListener listener, Object obj) CheckboxComponent에 ChangeListener를 등록 한다.

56 CheckboxGroup CheckboxGroup은 여러 개의 CheckboxComponent들을 역어 그룹 된 라디오버튼처럼 움직이게 한다. 하나의 CheckboxGroup으로 등록된 CheckBoxComponent들은 동시에 여러 개가 ON상태가 될 수 없으며 동시에는 하나의 CheckboxComponent만 ON될 수 있다. 그러므로 하나의 Checkbox가 ON 되면 다른 모든 Group으로 묵인 Checkbox들은 OFF 가 된다

57 CheckboxGroup 주요 method
public void select(CheckboxComponent cb) CheckboxGroup으로 묶여 있는 CheckboxComponent중에 주어진 컴포넌트를 ON상태로 한다. public CheckboxComponent getSelectedCheckbox() 이 CheckboxGroup에 등록된 Checkbox중 현재 ON 상태인 CheckboxComponent를 구한다. public void setChangeListener(ChangeListener listener, Object obj) CheckboxGroup에 ChangeListener를 등록 한다.

58 예제 4.8

59 AnnunciatorComponent
public class AnnunciatorComponent extends ShellComponent 사용자에게 전파 세기와 배터리 사용 용량을 화면에 보여주는 클래스. 이 클래스는 능동적으로 내부 값이 바뀌면 화면의 내용도 바뀐다.

60 AnnunciatorComponent 주요 method
public void addComponent(int idx, Component cmp) 자식 컴포넌트를 하나 추가한다. public void removeComponent(Component cmp) 지정된 컴포넌트를 삭제한다.. public void layout() 하위 컴포넌트의 크기와 위치를 결정한다. public void show() 컴포넌트를 화면상에 보여준다. protected void paint(Graphics g) 그래픽스 g를 가지고 컨테이너 컴포넌트를 그린다.

61 예제 4.9

62 TextComponent/TextBoxComponent/TextFieldComponent
java.lang.Object | +--org.kwis.msp.lwc.Component +--org.kwis.msp.lwc.TextComponent Direct Known Subclasses: TextBoxComponent, TextFieldComponent public abstract class TextComponent extends Component

63 TextComponent 텍스트 출력 및 입력 수정 삭제를 위한 추상 클래스

64 TextComponent 입력 제한자 CONSTRAINT_NUMBER CONSTRAINT_PASSWORD
'-',' '와 숫자입력만을 허용한다. CONSTRAINT_PASSWORD 암호입력을 위한 입력 형태로 내부적으로 사용되는 문자열은 숫자만을 허용한다. CONSTRAINT_ ADDRESS 이메일 주소 입력을 위한 입력 제한자이다. CONSTRAINT_URL URL입력을 위한 입력 제한자이다. CONSTRAINT_PHONENUMBER 전화번호입력을 위한 입력 제한자이다. CONSTRAINT_ANY 모든 문자열을 입력할 수 있는 입력 제한자이다.

65 TextBoxComponent TextBoxComponent는 TextComponent를 상속한 클래스로 정해진 넓이에 맞도록 문자를 편집 할 수 있다. 이 컴포넌트의 넓이는 이 컴포넌트를 추가한 ContainerComponent의 넓이와 같으며, 넓이는 입력한 문자 데이터에 맞도록 자동 변경된다. 기본적으로 최대 입력 가능한 문자열에 대한 제한은 하지 않으며, 필요하다면 TextComponent.setMaxLength(int maxLen)를 통해서 최대 입력 가능한 문자 수를 제한 할 수 있다.

66 TextBoxComponent 주요 method
public void setString(String data) 문자 데이터를 지정한다. public void insert(char[] data, int offset, int len, int index) 현재 화면에 출력된 문자 데이터에서 인자로 주어진 문자 데이터를 index 위치에 추가한다. public void delete(int index, int len) 현재 화면에 보여지고 있는 문자데이터의 index위치에서부터 len길이만큼 삭제한다. public int getPreferredWidth() 컴포넌트의 적절한 폭을 결정한다. public int getPreferredHeight(int w) 컴포넌트의 적절한 높이를 결정한다.

67 TextBoxComponent 주요 method
public int getPreferredHeight() 컴포넌트의 적절한 높이를 결정한다. public void configure(int x, int y, int w, int h, int mask) 컴포넌트의 위치나 크기를 변경한다. public boolean keyNotify(int type, int key) 키 입력을 받으면 호출된다. public void setFont(Font f) 폰트를 지정한다. public void paintContent(Graphics g) 내부를 칠한다.

68 TextFieldComponent TextFieldComponent는 TextComponent를 상속한 클래스로 한 라인에서 문자 편집을 한다. 이 컴포넌트의 넓이는 입력된 문자에 맞도록 자동으로 변경된다. 기본적으로 최대 입력 가능한 문자열에 대한 제한은 하지 않는다. TextComponent.setMaxLength(int maxLen)를 통해서 최대 입력 가능한 문자 수를 제한 할 수 있다.

69 TextFieldComponent 주요 method
public void insert(char[] data, int offset, int len, int index) 현재 화면에 출력된 문자 데이터에서 인자로 주어진 문자 데이터를 index 위치에 추가한다. public void delete(int index, int len) 현재 화면에 보여지고 있는 문자데이터의 index위치에서부터 len길이만큼 데이터를 삭제한다. public int getPreferredWidth() 컴포넌트의 적절한 폭을 결정한다. public int getPreferredHeight() 컴포넌트의 적절한 높이를 결정한다. public void paintContent(Graphics g) 내부를 칠한다. public boolean keyNotify(int type, int key) 키 입력을 받으면 호출된다.

70 예제 4-10 예제 4-11


Download ppt "4장 컴포넌트 (I) org.kwis.msp.lwc."

Similar presentations


Ads by Google