지난번에 이어서 이번에도 UI객체에 대해서 설명을 하도록 하겠습니다.
이번에 설명드릴 객체는 다음과 같습니다.
- ObjectChoiceField
- 배열로 정의한 객체를 selectBox 형태로 보여주는 UI 객체입니다.
- NumericChoiceField
- 시작과 끝의 값을 지정해서 지정한 증가값으로 selectBox를 보여주는 UI 객체입니다.
- CheckboxField
- 이름그대로 CheckBox UI 객체입니다.
- ListField
- Vector 객체에 객체를 담아서 ListField로 보여주는 UI 객체입니다.
- 지정된 객체는 Graphics 객체를 활용해서 보여줍니다.
- RadioButtonGroup & RadioButtonField
- RadioButtonField는 이름 그대로 RadioButton UI 객체입니다.
- RadioButtonGroup는 RadioButtonField를 그룹화 시켜주는 UI 객체입니다.
위에 나열한 객체를 순서대로 생성해서 입력한 모습
다른 객체를 더 넣고 싶었지만 화면에 이넘들만으로 꽉 차네요 ㅡㅡ;;
ObjectChoiceField를 선택했을 때의 모습
배열로 선택한 날짜 리스트가 입력되어 있다.
NumericChoiceField를 선택했을 때의 모습
시작은 1부터 마지막은 31까지 그리고 증가값은 1로 설정한 NumericChoiceField 객체
CheckBoxField, ListField, RadioButtonField를 보여주는 모습
CheckBoxField에서는 ReadOnly 옵션을 통해서 초기지정된 값을 변경 못 하도록 설정할 수 있다.
ListField는 입력된 값을 순차적으로 보여준다.
RadioButtonField는 RadioButtonGroup으로 그룹화해서 Option1과 Option2 중에서 하나만 선택되도록 하였다.
그럼 오늘도 역시 많은 분들이 원하시는 소스입니다.
지난번에 설명드렸듯이 시뮬레이터에서 한글이 지원되지 않아서 필드에 입력한 글자는 모두 영문으로 입력하였습니다. 이해해 주세요.
001.
package
org.bbone.sample;
002.
003.
import
java.util.Vector;
004.
005.
import
net.rim.device.api.system.Display;
006.
import
net.rim.device.api.ui.Graphics;
007.
import
net.rim.device.api.ui.UiApplication;
008.
import
net.rim.device.api.ui.component.CheckboxField;
009.
import
net.rim.device.api.ui.component.ListField;
010.
import
net.rim.device.api.ui.component.ListFieldCallback;
011.
import
net.rim.device.api.ui.component.NumericChoiceField;
012.
import
net.rim.device.api.ui.component.ObjectChoiceField;
013.
import
net.rim.device.api.ui.component.RadioButtonField;
014.
import
net.rim.device.api.ui.component.RadioButtonGroup;
015.
import
net.rim.device.api.ui.component.SeparatorField;
016.
import
net.rim.device.api.ui.container.MainScreen;
017.
018.
public
class
UiSample2
extends
UiApplication {
019.
020.
public
UiSample2() {
021.
UiSampleScreen uiScreen =
new
UiSampleScreen();
022.
pushScreen(uiScreen);
023.
}
024.
025.
public
static
void
main(String[] args) {
026.
UiSample2 theApp =
new
UiSample2();
027.
theApp.enterEventDispatcher();
028.
}
029.
}
030.
031.
class
UiSampleScreen
extends
MainScreen{
032.
private
ListField listField;
033.
private
Vector listElement;
034.
public
UiSampleScreen() {
035.
setTitle(
"UI SAMPLE NO2"
);
036.
// 배열에 저장되어있는 값으로 select box를 생성한다.
037.
String[] days = {
"Monday"
,
"Tuesday"
,
"Wedneday"
,
"Thursday"
,
"Friday"
,
"Saturday"
,
"Sunday"
};
038.
// 배열은 0부터 시작하고 iSetTo에 설정되어 있는 값으로 초기화됨.
039.
int
iSetTo =
1
;
040.
add(
new
ObjectChoiceField(
"Object Drop-down"
, days, iSetTo));
041.
add(
new
SeparatorField());
042.
// 숫자의 시작과 끝을 지정해서 select box를 생성한다.
043.
// 시작숫자
044.
int
iStartAt =
1
;
045.
// 종료숫자
046.
int
iEndAt =
31
;
047.
// 숫자생성시 증가값
048.
int
iIncrement =
1
;
049.
// 초기셋팅값
050.
iSetTo =
9
;
051.
add(
new
NumericChoiceField(
"Number Drop-down"
, iStartAt, iEndAt, iIncrement, iSetTo));
052.
add(
new
SeparatorField());
053.
// checkBox를 생성한다.
054.
add(
new
CheckboxField(
"Checked CheckBox"
,
true
));
055.
add(
new
CheckboxField(
"UnCheck CheckBox"
,
false
));
056.
add(
new
CheckboxField(
"ReadOnly CheckBox"
,
false
,
this
.READONLY));
057.
add(
new
SeparatorField());
058.
listElement =
new
Vector();
059.
listField =
new
ListField();
060.
ListCallback callback =
new
ListCallback();
061.
listField.setCallback(callback);
062.
initializeList();
063.
064.
add(listField);
065.
add(
new
SeparatorField());
066.
RadioButtonGroup radioButtonGroup =
new
RadioButtonGroup();
067.
add(
new
RadioButtonField(
"Option 1"
, radioButtonGroup,
true
));
068.
add(
new
RadioButtonField(
"Option 2"
, radioButtonGroup,
false
));
069.
add(
new
SeparatorField());
070.
}
071.
// ListField에 표시할 내용 지정
072.
private
void
initializeList(){
073.
String listFieldName =
"-----List Field----"
;
074.
String itemOne =
"List item One"
;
075.
String itemTwo =
"List item Two"
;
076.
listElement.addElement(listFieldName);
077.
listElement.addElement(itemOne);
078.
listElement.addElement(itemTwo);
079.
reloadList();
080.
}
081.
// ListField의 사이즈를 다시 확인해서 지정합니다.
082.
private
void
reloadList(){
083.
listField.setSize(listElement.size());
084.
}
085.
// 종료시 확인 팝업을 표시하지 않도록 설정
086.
public
boolean
onSavePrompt(){
087.
return
true
;
088.
}
089.
// ListFieldCallback 인터페이스는 ListField를 그려주기 위한 인터페이스다.
090.
// ListField는 ListFieldCallback 인터페이스를 꼭 참조해서해서 사용한다.
091.
private
class
ListCallback
implements
ListFieldCallback{
092.
// 호출된 해당 행을 그릴때 호출
093.
public
void
drawListRow(ListField list, Graphics g,
int
index,
int
y,
int
w){
094.
String text = (String)listElement.elementAt(index);
095.
g.drawText(text,
0
, y,
0
, w);
096.
}
097.
// 목록에서 항목을 가져옵니다.
098.
public
Object get(ListField list,
int
index){
099.
return
listElement.elementAt(index);
100.
}
101.
// 리스트의 처음 문자열의 위치를 가져옵니다.
102.
public
int
indexOfList(ListField list, String prefix,
int
string){
103.
return
listElement.indexOf(prefix, string);
104.
}
105.
// ListField의 높이를 가져옵니다.
106.
public
int
getPreferredWidth(ListField list){
107.
return
Display.getWidth();
108.
}
109.
}
110.
}
오늘은 여기까지 입니다.
아직도 소개할 UI가 조금 더 남아 있기에 다음에도 UI에 관련되서 설명 드리도록 하겠습니다.
그런데 걱정은 회사일이 다시 바빠질 기미가 보이네요 ㅡㅡ;;;
'스마트폰 프로그래밍 > 블랙베리' 카테고리의 다른 글
[Blackberry] 블랙베리 메일 필터생성하기 (0) | 2011.12.14 |
---|---|
[Blackberry] 블랙베리 개발하기-6(UI 객체3) (0) | 2011.12.14 |
[Blackberry] 블랙베리 개발하기-4(UI 객체) (0) | 2011.12.14 |
[Blackberry] 블랙베리 개발하기-3(JavaDoc API 활용) (0) | 2011.12.14 |
[Blackberry] 블랙베리 개발하기-2(HelloWorld 출력하기) (0) | 2011.12.14 |