회사의 업무로 인해서 UI객체 3번째를 이제서야 올리게 되네요... 
지금 시간은 퇴근시간인데... ㅠ.ㅠ 
그리고 이번 샘플에는 시간이 좀 많이 투자되어버렸네요.
일반 자료에서 찾아서 만들었던 것을 그나마 소스가 쓸만해야 되니깐 쓸만하도록 수정은 했는데... 정말 쓸만한지는 잘 모르겠네요.
그리고 안타깝게도... 강좌를 읽는 것보다 사용기에 대해서 더 많은 분들이 관심을 갖으시더군요... 
강좌는 접고 사용기 중심으로 해야 되는건 아닌지... ㅠ.ㅠ
오늘 소개할 UI들은 다음과 같습니다.
- DateTimePicker
- FilePicker
- SpinBox
- DataSet을 활용한 AutoCompleteField
- DataSource를 활용한 AutoCompleteField
전 소스를 제공하니 설명이 허접해도 이해해 주시기 바랍니다. ㅡㅡㅋ
001.package org.bbone.sample; 002.import java.util.Calendar; 003.import java.util.Date; 004.import java.util.Vector; 005.import net.rim.device.api.collection.util.BasicFilteredList; 006.import net.rim.device.api.ui.Field; 007.import net.rim.device.api.ui.FieldChangeListener; 008.import net.rim.device.api.ui.FocusChangeListener; 009.import net.rim.device.api.ui.UiApplication; 010.import net.rim.device.api.ui.component.AutoCompleteField; 011.import net.rim.device.api.ui.component.ButtonField; 012.import net.rim.device.api.ui.component.Dialog; 013.import net.rim.device.api.ui.component.KeywordFilterField; 014.import net.rim.device.api.ui.component.LabelField; 015.import net.rim.device.api.ui.component.SeparatorField; 016.import net.rim.device.api.ui.component.TextSpinBoxField; 017.import net.rim.device.api.ui.container.MainScreen; 018.import net.rim.device.api.ui.container.SpinBoxFieldManager; 019.import net.rim.device.api.ui.picker.DateTimePicker; 020.import net.rim.device.api.ui.picker.FilePicker; 021.public class UiSample3 extends UiApplication {022.public UiSample3() {023.UiSampleScreen uiScreen = new UiSampleScreen();024.pushScreen(uiScreen);025.}026.public static void main(String[] args) {027.UiSample3 theApp = new UiSample3();028.theApp.enterEventDispatcher();029.}030.}031.class UiSampleScreen extends MainScreen implements FieldChangeListener{032.ButtonField datePickerButton;033.ButtonField filePickerButton;034.ButtonField spinBoxButton;035.TextSpinBoxField spinBoxDays;036.TextSpinBoxField spinBoxMonths;037.SpinBoxFieldManager spinBoxMgr;038.KeywordFilterField keywordField;039.Vector countries;040.final String[] DAYS   = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};041.final String[] MONTHS = {"January","February","March","April","May","June","July","August","September","October","November","December"};042.public UiSampleScreen() {043.setTitle("UI SAMPLE NO3"); 044.//        ButtonField를 추가해서 버튼을 클릭했을 때 DatePicker를 호출하는 이벤트를 생성한다.045.datePickerButton = new ButtonField("DatePickerButton", ButtonField.CONSUME_CLICK);046.datePickerButton.setChangeListener(this);047.add(datePickerButton);048.add(new SeparatorField());049.//        ButtonField를 추가해서 버튼을 클릭했을 때 FilePicker를 호출하는 이벤트를 생성한다.050.filePickerButton = new ButtonField("FilePickerButton", ButtonField.CONSUME_CLICK);051.filePickerButton.setChangeListener(this);052.add(filePickerButton);053.add(new SeparatorField());054.spinBoxButton = new ButtonField("SpinBoxButton", ButtonField.CONSUME_CLICK);055.spinBoxButton.setChangeListener(this);056.add(spinBoxButton);057.add(new SeparatorField());058.add(new LabelField("BasicFielterList Use DataSet"));059.BasicFilteredList filterList1 = new BasicFilteredList();060.filterList1.addDataSet(1, DAYS, "days", BasicFilteredList.COMPARISON_IGNORE_CASE);061.AutoCompleteField autoCompleteField1 = new AutoCompleteField(filterList1);062.add(autoCompleteField1);063.add(new SeparatorField());064.add(new LabelField("BasicFielterList Use DataSource"));065.BasicFilteredList filterList2 = new BasicFilteredList();066.filterList2.addDataSource(067.1, 068.BasicFilteredList.DATA_SOURCE_CONTACTS, 069.BasicFilteredList.DATA_FIELD_CONTACTS_NAME_FULL
 | BasicFilteredList.DATA_FIELD_CONTACTS_COMPANY | 
BasicFilteredList.DATA_FIELD_CONTACTS_EMAIL, 070.BasicFilteredList.DATA_FIELD_CONTACTS_NAME_FULL
 | BasicFilteredList.DATA_FIELD_CONTACTS_COMPANY | 
BasicFilteredList.DATA_FIELD_CONTACTS_EMAIL,071.BasicFilteredList.DATA_FIELD_CONTACTS_NAME_FULL,072.-1,073.null);074.AutoCompleteField autoCompleteField2 = new AutoCompleteField(filterList2);075.add(autoCompleteField2);076.add(new SeparatorField());077.}078.//    Button 클릭시에 반응하는 리스너079.public void fieldChanged(Field field, int context) {080.if(field == datePickerButton){081.UiApplication.getUiApplication().invokeLater(new Runnable() {082.public void run() {083.DateTimePicker datePicker = DateTimePicker.createInstance();084.datePicker.doModal();085.Calendar cal = datePicker.getDateTime();086.Date date = cal.getTime();087.Dialog.alert("DateTimePicker selected : " + date.toString());088.}089.});090.}else if(field == filePickerButton){091.UiApplication.getUiApplication().invokeLater(new Runnable() {092.public void run() {093.FilePicker filePicker = FilePicker.getInstance();094.filePicker.setListener(new FilePicker.Listener() {095.public void selectionDone(String selected) {096.Dialog.alert("FilePicker selected : " + selected);097.}098.});099.filePicker.show();100.}101.});102.}else if(field == spinBoxButton){103.UiApplication.getUiApplication().invokeLater(new Runnable() {104.public void run() {105.spinBoxMgr = new SpinBoxFieldManager();106.spinBoxMgr.setClickToLock(false);107.spinBoxMonths = new TextSpinBoxField(MONTHS);108.spinBoxMonths.setFocusListener(new FocusChangeListener() {109.//                        eventType 1: FOCUS_GAINED, 2: FOCUS_CHANGED, 3: FOCUS_LOST110.public void focusChanged(Field field, int eventType) {111.if(field == spinBoxMonths && eventType == FOCUS_LOST){112.Dialog.alert("You selected Months : " + (String)spinBoxMonths.get(spinBoxMonths.getSelectedIndex()));113.}114.}115.});116.spinBoxDays = new TextSpinBoxField(DAYS);117.spinBoxDays.setFocusListener(new FocusChangeListener() {118.//                        eventType 1: FOCUS_GAINED, 2: FOCUS_CHANGED, 3: FOCUS_LOST119.public void focusChanged(Field field, int eventType) {120.if(field == spinBoxDays  && eventType == FOCUS_LOST){121.Dialog.alert("You selected Days : " + (String)spinBoxDays.get(spinBoxDays.getSelectedIndex()));122.}123.}124.});125.spinBoxMgr.add(spinBoxMonths);126.spinBoxMgr.add(spinBoxDays);127.Dialog diaLog = new Dialog(Dialog.OK, "SPINBOX", 0, null, 0);128.diaLog.add(spinBoxMgr);129.diaLog.show();130.}131.});132.}133.}134.//     종료시에 저장할지에 대한 프롬프트에서 무조건 저장하는 것으로 해서 종료한다.135.public boolean onSavePrompt(){136.return true;137.}138.}spinBox는 선택하는 방법을 아직은 찾아봐도 잘 모르겠네요. 
나중에 찾아서 알게되면 올려드리도록 하겠습니다.
'스마트폰 프로그래밍 > 블랙베리' 카테고리의 다른 글
| [Blackberry] 블랙베리 우편번호 검색 어플 (0) | 2011.12.14 | 
|---|---|
| [Blackberry] 블랙베리 메일 필터생성하기 (0) | 2011.12.14 | 
| [Blackberry] 블랙베리 개발하기-5(UI객체2) (0) | 2011.12.14 | 
| [Blackberry] 블랙베리 개발하기-4(UI 객체) (0) | 2011.12.14 | 
| [Blackberry] 블랙베리 개발하기-3(JavaDoc API 활용) (0) | 2011.12.14 |