휴대폰을 사용하여 문자를 보내려고 할 때 문자 메세지를 작성하고 전화번호를 입력한 후 전송 버튼을 눌러 전송을 한다고 해 보자. 그때 <전송중입니다>라는 창이 잠시 떴다가 사라지는 것을 볼 수 있다. 문자가 전송된 후 <발신함에저장하시겠습니까>라는 메세지와 <예>, <아니오> 를 사용자로 부터 입력 받는 버튼 영역이 있다. DialogComponent는 이렇게 필요에 의해 창을 보여주거나 사용자에게 입력을 받아야 할 때 사용되는 컴포넌트이다.
DialogComponent는 세가지 타입이 있다.
TYPE_NONE의 경우에는 디폴트로 3초간 창이 떴다가 사라지는 유형이다. 딜레이 값은 setTimeout메소드를 이용하여 지정할 수 있다.
TYPE_OK의 경우에는 <OK>버튼 만 있는 경우이고,
TYPE_OK_CANCEL은 <OK> 버튼과 <CANCEL> 버튼이 있는 형태의 다이얼로그 타입니다.
DialogComponent는 타이틀 영역, 데이터 영역, 버튼 영역의 세가지 영역으로 구성되어 있으며, 데이터 영역에는 한 개의 컴포넌트만을 추가 할 수 있다. 여러개의 컴포넌트를 가지는 다이얼로그를 만들려면 ContainerComponent를 활용하여 데이터 영역에 추가하면 된다.
DialogComponent 클래스의 주요 생성자 |
- public DialogComponent(int type) 컴포넌트와 타이틀이 없고 주어진 타입을 가지는 DialogComponent를 생성. |
- public DialogComponent(Component c, String title, int type) 주어진 컴포넌트, 타이틀, 타입으로 DialogComponent를 생성. |
- public DialogComponent(Component c, String title, int type, int x, int y, int w, int h) 주어진 컴포넌트, 타이틀, 타입, 그리고 좌표와 크기로 DialogComponent를 생성 |
DialogComponent 클래스의 주요 필드 |
- public static final int TYPE_NONE 버튼이 없는 형태의 다이얼로그 타입. 기본 화면 출력 시간은 3초이다. |
- public static final int TYPE_OK |
- public static final int TYPE_OK_CANCEL OK 버튼과 CANCEL 버튼이 있는 다이얼 로그 타입. |
- public static final int DLG_TIMEOUT |
- public static final int DLG_OK |
- public static final int DLG_CANCEL |
- public static final int OK_BUTTON |
- public static final int CANCEL_BUTTON |
- public static final int TIMEOUT_INFINITE |
- protected int actionState |
DialogComponent 클래스의 주요 메소드 |
- 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() DialogComponent를 화면에 보여준다. |
- public int getActionState() DialogComponent에서 발생한 마지막 액션을 얻어온다. |
메소드 리스트를 보면 화면에 DialogComponent를 화면에 나타나게 하는 두 가지의 메소드가 있는 것을 확인할 수 있다. 하나는 doModal()이고 다른 하나는 ShellComponent로 부터 오버라이드한 show()이다.
doModal()은 DialogComponent를 화면에 나타나게 한다. 이 메소드를 호출하면 다이얼로그가 화면에 출력되며 버튼이나 timeout에 의한 액션이 발생할 경우 화면에서 제거 된다. 이때 발생한 액션 값을 리턴한다. 예를 들어 TYPE_OK_CANCEL 유형을 설정하여 생성된 다이얼로그의 경우 doModal()을 이용할 경우 사용자에게 입력 받을 수 있느 값이 두 개이기 때문에 두 종류의 리턴 값을 가지게 되는데 <OK> 버튼은 DLG_OK, <CANCEL> 버튼은 DLG_CANCEL 값을 리턴 받게 된다.
show()를 사용하여 DialogComponent를 화면에 나타낼 경우에는 사용자의 선택 여부를 알 수 없다. 그러므로 DialogComponent 사용 시 show() 메소드를 이용하는 것 보다 doModal()를 이용하는 것이 더 바람직 하다.
예제를 살펴 보자.
import org.kwis.msp.lcdui.*;
import org.kwis.msp.lwc.*;
public class wipiTest extends Jlet implements ActionListener{
ShellComponent sc= new ShellComponent();
FormComponent fc= new FormComponent();
LabelComponent lb1= new LabelComponent("메세지 전송");
LabelComponent lb2= new LabelComponent("메세지 전송 완료");
TextBoxComponent tb=
new TextBoxComponent(null, TextBoxComponent.CONSTRAINT_ANY, 80);
ButtonComponent btn= new ButtonComponent("전송하기", null);
DialogComponent dc1=
new DialogComponent(lb1, "문자메세지", DialogComponent.TYPE_NONE);
DialogComponent dc2=
new DialogComponent(lb2, "문자메세지", DialogComponent.TYPE_OK);
public void startApp(String args[]){
dc1.setTimeout(5000);
btn.setActionListener(this, null);
fc.addComponent(tb);
fc.addComponent(btn);
fc.setGab(5);
sc.setTitle("문자 메세지 전송하기");
sc.addComponent(fc);
sc.show();
}
public void pauseApp(){}
public void resumeApp(){}
public void destroyApp(boolean b){}
public void action(Component c, Object obj){
if(c==btn){
dc1.doModal();
dc2.doModal();
tb.setString(null);
}
}
};
출력 결과는 다음과 같다.
'Computer > Jlet' 카테고리의 다른 글
[18] 컴포넌트 - (8)AnnunciatorComponent (0) | 2006.08.12 |
---|---|
[17] 컴포넌트 - (7)CheckboxComponent (0) | 2006.08.12 |
[15] 컴포넌트 - (5)ButtonComponent (0) | 2006.08.12 |
[14] 컴포넌트 - (4)ListComponent/ListItemComponent (0) | 2006.08.12 |
[13] 컴포넌트 - (3)LabelComponent (0) | 2006.08.12 |