고수준 사용자 인터페이스 프로그래밍 Lecture #4.

Slides:



Advertisements
Similar presentations
Class diagram. 클래스 클래스 이름 연산 속성 2 class Transportation { private int maximumPassenger; private double speed; public void depart(); public void stop();
Advertisements

11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
14. 위피 게임: 가위바위보 게임 초기에 점수=0 처음 이기면 10 점 그 다음부터 이기면 점수=현재 점수*2 지면
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
- 계산기 GUI 구성하기 - 조원: 박강국 오정은 이귀식 김도윤 안영진.
MEAN Stack Front to Back (MEANAuthApp)
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
GUI 이벤트, 이벤트 리스너와 이벤트 소스 그림 그리기 내부 클래스
제7장 이벤트 프로그래밍.
제14장 원격 메소드 호출 김 기 환. 조 명 휘.
12장. JSP에서 자바빈 활용 제12장.
C#에서 데이터베이스 연동 방법.
작업 스케줄링 Lecture #8.
Sookmyung Women’s Univ. PSLAB Moon, Se won
MIDP UI ps lab 김윤경.
모바일 자바 프로그래밍 MIDlet 프로그래밍 Pslab 오민경.
J2ME(Java 2 Micro Edition) 무선 장치용 UI의 핵심 컴포넌트
RMS (Record Management System)
모바일 서버 만들기 13장 Do it! Node.js 프로그래밍 이지스퍼블리싱 제공 강의 교안 2017/03
예제로 배우는 Visual Basic 계산기로 익히는 연산자
2 서블릿의 기초.
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
4장 컴포넌트 (I) org.kwis.msp.lwc.
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
정적 메소드와 정적 변수 상수 래퍼 클래스 포매팅
CDC Connected Device Configuration CLDC보다 많은 리소스를 가진 시스템을 대상으로 설정
8장 자바 입출력.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
Swing 컴포넌트 텍스트 컴포넌트 텍스트 필드 텍스트 영역 스크롤 페인 체크 박스 라디오 버튼.
MIDP UI API.
CHAP 7. 메뉴와 대화상자.
Mobile Messenger 오 경 민 추 선 득 김 용 구
실전 사운드 처리 프로그래밍 Lecture #11.
명품 Java Programming.
최용술 장 Thread 최용술
10장 다중 스레드 10.1 스레드 개요 10.2 Thread 클래스 10.3 스레드 생성
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
모바일 자바 프로그래밍 MIDP 이벤트 & 그래픽 Ps lab 오민경.
Chapter 05. 클래스 완성. chapter 05. 클래스 완성 01. 복사 생성자 복사 생성(Copy Construction) 생성될 때 자신과 같은 타입의 객체를 변수로 받아, 이 객체와 같은 값을 갖는 새로운 객체를 생성하는 것 명시적인 생성 과정뿐만.
DataScience Lab. 박사과정 김희찬 (월)
저수준 사용자 인터페이스 프로그래밍 Lecture #6.
Android Coding Convention
주소록 프로그램.
스택(Stack) 김진수
제1장 서론.
Sookmyung Women’s Univ. PSLAB Ohe, heejung
Cairngorm(캔곰) : Flex UI 프레임워크
어서와 Java는 처음이지! 제9장 인터페이스, 패키지.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
Chap10 다중 스레드 Section 1 : 스레드 개요 Section 2 : Thread 클래스와 스레드 생명주기
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
1 2 ■ EPC 커스터마이징 품목 운영 결과 보고 커스터마이징 품목 : 매출 ↑ , CS만족도 ↓ System 개선
MIDP-MOBILE INFORMANTION DEVICE PROFILE
Java Chapter 4 ~ 주차.
컴퓨터공학실습(I) 3주 인공지능연구실.
비주얼 프로그래밍 1분반 화/목.
CACM 구현 public class CACM { public CACM(File file)
자바 5.0 프로그래밍.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
제8장 쓰레드 프로그래밍.
[ 단원 06 ] 상속과 다형성.
제 4 장 클래스 작성 Lab 4- 2.
샘플앱 제작 안내 2016/05/18.
C# 10장. 참조형.
제 11 장 자바빈즈를 이용한 JDBC 프로그래밍 학기 인터넷비즈니스과 강 환수 교수.
자바 프로그래밍 Thread를 이용한 애니메이션 서울호서전문학교 게임프로그램개발과.
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
Presentation transcript:

고수준 사용자 인터페이스 프로그래밍 Lecture #4

강의 목차 사용자 인터페이스의 개념과 종류를 알아본다. Display, Command, Displayable 등 기본 API의 기능과 사용 방법을 익힌다. TextBox, Alert, List 등 컴포넌트 클래스의 기능과 사용 방법을 익힌다. Item의 서브 클래스를 화면에 출력하는 Form 클래스의 활용 방법을 익힌다. Mobile Programming

미들렛 UI API (1) MIDlet UI API javax.microedition.lcdui package MIDP 사용자 interface를 위한 다양한 클래스와 interface를 제공 MIDP에서 기본적으로 제공하는 여러 가지 사용자 interface: Mobile Programming

Javax.microedition.lcdui 미들렛 UI API MIDlet UI API 구조 Command Graphics Displayable Display Screen Canvas TextBox List Alert Form Javax.microedition.lcdui Javax.microedition.lcdui.gam GameCanvas Mobile Programming

Display 클래스 Display 클래스 화면 출력과 입력 장치 관리를 담당 화면 출력 getDisplay() 메소드 이용 display = Display.getDisplay(this); Displayable 객체 출력 텍스트 박스, 리스트, 폼, 캔버스 등 Mobile Programming

Displayable 컴포넌트 (1) MIDP에서 사용 가능한 Display 컴포넌트들이 가져야 할 기능을 정의 Mobile Programming

Displayable 컴포넌트 (2) Displayable 컴포넌트의 기본적인 클래스 Screen 클래스 Canvas 클래스 Displayable 클래스의 기본 메소드: Mobile Programming

Command 클래스 (1) Command 클래스 생성자 Command 클래스로 생성할 수 있는 명령의 종류 Command(String label, int commandType, int priority) Command(String shortLabel, String longLabel, int commandType, int priority) Mobile Programming

Command 클래스 (2) Command 클래스 명령어 객체 생성 방법 Command ok_cmd = new Command("OK", Command.OK, 1); Command exit_cmd = new Command("Exit", Command.EXIT, 0); 명령어 객체를 Displayable 객체(textbox) 에 추가하는 방법 addCommand() 이용 textbox.addCommand(ok_cmd); textbox.addCommand(exit_cmd); Mobile Programming

Command 클래스 (3) 예제: 명령어 생성 프로그램 CommandMIDlet.java 01 import javax.microedition.midlet.MIDlet; 02 import javax.microedition.lcdui.*; 03 04 public class CommandMIDlet extends MIDlet { 05 private Display display; 06 private Displayable textbox; 07 08 public CommandMIDlet() { 09 textbox = new TextBox("Command MIDlet", "명령어 출력", 20, TextField.ANY); 10 Command ok_cmd = new Command("OK", Command.OK, 1); 11 Command exit_cmd = new Command("Exit", Command.EXIT, 0); 12 textbox.addCommand(ok_cmd); 13 textbox.addCommand(exit_cmd); 14 } 15 protected void startApp() { 16 display = Display.getDisplay(this); 17 display.setCurrent(textbox); 18 } 19 protected void destroyApp(boolean arg0) { } 20 protected void pauseApp() { } 21 } 실행 결과 화면 Mobile Programming

Command 클래스 (4) 예제: 명령어 처리 프로그램 초기화면 OK 명령 실행 결과 OK 버튼 클릭 Mobile Programming

Command 클래스 (5) 예제: 명령어 처리 프로그램 CommandActionMIDlet.java 01 import javax.microedition.midlet.MIDlet; 02 import javax.microedition.lcdui.*; 03 04 public class CommandActionMIDlet extends MIDlet implements CommandListener { … 10 public CommandActionMIDlet() { 16 textbox.setCommandListener(this); 17 } 24 public void commandAction(Command cmd, Displayable dis) { 25 if(cmd == ok_cmd) { 26 textbox = new TextBox("Command Action MIDlet", "OK 버튼 클릭 !!", 20, TextField.ANY); 27 textbox.addCommand(exit_cmd); 28 textbox.setCommandListener(this); 29 display.setCurrent(textbox); 30 } else if(cmd == exit_cmd) { 31 notifyDestroyed(); 32 } 33 } 34 } Mobile Programming

Screen 컴포넌트 MIDP 사용자 interface의 최상위 추상화 클래스 제공 사용자 입력을 렌더링하는 특정 디바이스의 그래픽을 캡슐화한 객체 Screen 클래스의 주요 메소드: Mobile Programming

TextBox 클래스 (1) 개요 생성자 화면에 텍스트를 보여주거나 사용자가 텍스트를 직접 입력하고 편집할 수 있다. title : 제목 text : 화면에 표시할 초기 내용 maxSize : 저장할 수 있는 최대 문자 수 constraints : 입력 형식 TextBox(String title, String text, int maxSize, int constraints) Mobile Programming

TextBox 클래스 (2) 사용 예 제목 화면출력 내용 TextBox textbox = new TextBox( "First MIDlet", // 제목 "명령어 출력", // 화면 출력 내용 20, // 문자의 최대 크기 TextField.ANY); // 모든 입력 유형 가능 제목 화면출력 내용 Mobile Programming

TextBox 클래스 (3) 입력 형식 TextBox 클래스의 메소드  ANY EMAILADDR NUMERIC PASSWORD PHONENUMBERUR URL TextBox 클래스의 메소드  Mobile Programming

TextBox 클래스 (4) 간단한 문자 입출력 프로그램 초기화면 문자 입력 결과 OK 명령 실행 결과 BACK 버튼 클릭 초기화면 문자 입력 결과 OK 명령 실행 결과 문자 입력 OK 버튼 클릭 Mobile Programming

TextBox 클래스 (5) 간단한 문자 입출력 프로그램 TextBoxTest.java 01 import javax.microedition.midlet.*; 02 import javax.microedition.lcdui.*; 03 04 public class TextBoxTest extends MIDlet implements CommandListener { 05 private TextBox textbox; 06 private Command ok_cmd; 07 private Command exit_cmd; 08 private Command back_cmd; 09 private Display display; 10 11 public TextBoxTest() { 12 ok_cmd = new Command("OK", Command.OK, 1); 13 exit_cmd = new Command("Exit“, Command.EXIT, 1); 14 back_cmd = new Command("Back", Command.BACK, 1); } 16 public void startApp() { 17 textbox= new TextBox("문자를 입력하세요", "“, 30, TextField.ANY); 18 textbox.addCommand(ok_cmd); textbox.addCommand(exit_cmd); display = Display.getDisplay(this); Mobile Programming

TextBox 클래스 (6) 간단한 문자 입출력 프로그램 TextBoxTest.java 21 textbox.setCommandListener(this); 22 display.setCurrent(textbox); 23 } 24 public void pauseApp() { } 25 public void destroyApp(boolean unconditional) { } 26 public void commandAction(Command cmd, Displayable disp) { 27 if(cmd == ok_cmd) { 28 String tb = textbox.getString(); 29 textbox = new TextBox("입력 결과", "입력된 문자는 :\n " + tb + "입니다.", 30, TextField.ANY); 30 textbox.addCommand(back_cmd); 31 textbox.setCommandListener(this); 32 display.setCurrent(textbox); 33 } else if(cmd == exit_cmd) { 34 notifyDestroyed(); 35 } 36 if(cmd == back_cmd) { 37 startApp(); 38 } 39 } 40 } Mobile Programming

Alert 클래스 (1) 개요 생성자 경고 메시지 title : 제목 alertText : 화면에 출력되는 문자열(내용) alertImage : 화면에 출력되는 이미지 alertType : 경고 유형(ALARM, CONFIRMATION, ERROR, INFO, WARNING) Alert(String title) Alert(String title, String alertText, Image alertImage, AlertType alertType) Mobile Programming

Alert 클래스 (2) 사용 예 #1 사용 예 #2 Alert(String title, String alertText, Alert alert = new Alert("Alert !!"); alert.setString(“경고! /n 다시 입력하세요."); // 화면 출력 문자열 try { Image img = Image.createImage("/alertfig.png"); // 이미지 생성 } catch(Exception e) { } alert.setImage(img); // 화면 출력 이미지 alert.setType(AlertType.INFO); // 경고 유형 사용 예 #2 Alert(String title, String alertText, Image alertImage, AlertType alertType) 를 이용하여 경고 화면을 출력하시오. <112-113 페이지 참조> Mobile Programming

Alert 클래스 (3) 단순 경고 메시지 프로그램 프로그램: <예제 4-4 참조> 실습 경고 표시 화면이 자동 반환되지 않도록 <예제 4-4>를 수정하시오 OK 버튼 클릭 자동 반환 Mobile Programming

List 클래스 (1) 개요 생성자 이미지와 문자열로 구성된 선택 항목 리스트 제공 리스트 유형 IMPLICIT, EXCLUSIVE, MULTIPLE 생성자 title : 제목 listType : 리스트의 유형(IMPLICIT, EXCLUSIVE, MULTIPLE) stringElements : 리스트의 항목 문자열 imageElements : 리스트의 항목 앞에 표시할 이미지 List(String title, int listType) List(String title, int listType, String[] stringElements, Image[] imageElements) Mobile Programming

List 클래스 (2) 사용 예 프로그램: <예제 4-6 참조> String[] select ={" 고급 게임 ", " 중급 게임 ", " 초급 게임"}; Image high_game = Image.createImage("/high_game.png"); Image medium_game = Image.createImage("/medium_game.png"); Image first_game = Image.createImage("/first_game.png"); Image[] imageArray = new Image[]{high_game, medium_game, first_game}; List lists = new List("리스트 테스트“, // 제목 "List.IMPLICIT“, // 리스트 유형 select, // 리스트 문자열 imageArray); // 이미지 프로그램: <예제 4-6 참조> Mobile Programming

List 클래스 (3) 리스트 유형 별 선택 처리 프로그램 IMPLICIT SELECT_COMMAND 이용 <예제 4-7 참조> if(c == List.SELECT_COMMAND) { int index = lists.getSelectedIndex(); alert = new Alert("리스트 선택 정보", lists.getString(index) +"을 선택하였습니다.“, null, AlertType.INFO); display.setCurrent(alert, lists); } 명령어 객체 이름을 직접 정의하고 객체 생성하여 이용 <예제 4-8 참조> private Command select_cmd; select_cmd = new Command("Select", Command.ITEM, 1); lists.setSelectCommand(select_cmd); public void commandAction(Command c, Displayable d) { if(c == select_cmd) { … Mobile Programming

List 클래스 (4) 리스트 유형 별 선택 처리 프로그램 EXCLUSIVE 실습 명령어 객체 이름을 직접 정의하고 객체 생성하여 이용 lists = new List("EXeclusive 리스트",List.EXCLUSIVE, select, imageArray); select_cmd = new Command("SELECT", Command.ITEM, 1); lists.addCommand(select_cmd); … public void commandAction(Command c, Displayable d) { if(c==select_cmd) { int index = lists.getSelectedIndex(); 실습 예제 4-8 를 수정하여 위의 예를 적용하시오. Mobile Programming

List 클래스 (5) 리스트 유형 별 선택 처리 프로그램 MULTIPLE 명령어 객체 이름을 직접 정의하고 객체 생성하여 이용 lists = new List(“Multiple 리스트",List.MULTIPLE, select, imageArray); select_cmd = new Command("SELECT", Command.ITEM, 1); lists.addCommand(select_cmd); … public void commandAction(Command c, Displayable d) { if(c==select_cmd) { …… <참조 예제 4-9> Mobile Programming

Form 클래스 (1) 개요 여러 아이템(Item)을 한 화면에함께 출력하는 일종의 틀 Form 클래스 이용 예 이미지(ImageItem) 읽기 전용 텍스트 필드(StringItem) 편집 가능 텍스트 필드(TextField) 편집 가능 날짜 필드(DateField) 게이지(Gauge) 선택 그룹(ChoiceGroup) 사용자 정의항목 (CustomItem) 등 Form 클래스 이용 예 Form 객체를 이용해 화면에 TextField, DateField, ImageItem을 출력한 결과 TextField DateField ImageItem Mobile Programming

Form 클래스 (2) 생성자 이용 예: title : 제목 Item[] items : item 배열 private TextField textfield; private DateField datefield; private ImageItem imageitem; private Item[] items; textfield = new TextField("텍스트 필드", "문자를 입력하세요 : “, 30, TextField.ANY); datefield = new DateField("날짜 및 시간", DateField.DATE_TIME); imageitem = new ImageItem("게임 캐릭터", game_img, ImageItem.LAYOUT_DEFAULT, "게임 캐릭터 제공할 수 없음"); items = new Item[]{textfield, datefield, imageitem}; // items 배열 객체 생성 forms = new Form("Form Test", items); // Form 제목과 items 배열 Form(String title) Form(String title, Item[] items) Mobile Programming

Form 클래스 (3) 예제 4-10 참조 Form 클래스의 첫 번째 생성자인 Form(String title)를 이용해 먼저 제목만 있는 Form 객체를 생성한 뒤 Form에 포함할 항목들을 생성하여 추가하는 과정을 보여주는 프로그램 Mobile Programming

Item 컴포넌트 Form, Alert 등의 컨테이너에 추가될 수 있는 컴포넌트의 슈퍼 클래스(Super Class) Mobile Programming

ChoiceGroup 컴포넌트 (1) 아이템 그룹에 속한 여러 개의 아이템 중에서 단일 또는 다중 선택할 수 있는 기능을 제공 하나 또는 여러 개를 선택할 수 있는 그룹을 생성 가능 EXCLUSIVE와 MULTIPLE 타입만 지원 예: form = new Form("GhoiceGroup Test"); // 선택할 수 있는 form을 생성 form2 = new Form("당신이 선택한 결과는"); //결과를 보여주는 form생성 //결과 화면에서 보여줄 TextField생성 tf = new TextField("좋아하는 운동은?","",20,TextField.ANY); String[] select_radio={"축구","야구","농구","배구","탁구"}; cgradio = new ChoiceGroup("좋아하는 스포츠경기는?", ChoiceGroup.EXCLUSIVE, select_radio, null); /* 좋아하는 스포츠 경기라는 레이블을 가지고 EXCLUSIVE라는 타입과 보여줄 문자열의 값을 갖는 ChoiceGroup를 생성 */ Mobile Programming

ChoiceGroup 컴포넌트 (2) Mobile Programming

DataField 컴포넌트 (1) 날짜와 시간을 Form에 보여주는 Item 객체 날짜, 시간의 정보를 수정하거나 두 가지 정보 모두를 설정할 수 있다. 입력모드 DATE입력 모드: DATE입력 모드는 날짜만을 설정 TIME 입력 모드: TIME 입력 모드는 단지 시간정보(시간,분)만 설정 DATE_TIME 입력 모드: DATE_TIME 입력 모드는 시간과 날짜를 모두 설정 Mobile Programming

DataField 컴포넌트 (2) 예: // 현재의 디스플레이를 얻는다. display =Display.getDisplay(this); form = new Form("DateField Test"); //Date_Time라는 모드를 가진 DateField생성 DateField df = new DateField(" ", DateField.DATE_TIME); form.append(df); // form에 추가한다. display.setCurrent(form); Mobile Programming

Gauge 컴포넌트 (1) Form 내에서 프로그레시브 바 형태의 막대 그래프를 보여주기 위한 클래스 0부터 주어진 최대값까지… interactive or non-interactive Mobile Programming

Gauge 컴포넌트 (2) 예: dis= Display.getDisplay(this); form = new Form("Gauge Test"); Gauge gu = new Gauge("음량", false,100,70); Gauge gu1 = new Gauge("크기", true,100,50); form.append(gu); form.append(gu1); dis.setCurrent(form); Mobile Programming

ImageItem 컴포넌트 Image 객체가 Form이나 Alert에 추가 될 때 레이아웃 지시어를 제공 레이아웃 지시자를 조합하여 사용하는 규칙 LAYOUT_DEFAULT는 다른 지시자와 함께 사용할 수 없다. 실질적으로 그 값이 0이기 때문에 다른 레이아웃 값과 조합하면 오버라이딩이 된다. LAYOUT_LEFT+LAYOUT_RIGHT는 LAYOUT_CENTER와 같은 효과를 나타낸다. LAYOUT_CENTER는 LAYOUT_LEFT또는LAYOUT_RIGHT과 같이 사용할 수가 없다. 일반적으로, LAYOUT_LEFT, LAYOUT_RIGHT와 LAYOUT_CENTER를 LAYOUT_NEWLINE_BEFORE나 LAYOUT_NEWLINE_AFTER를 같이 사용할 수가 있다. Mobile Programming

StringItem 컴포넌트 내용은 어플리케이션에 의해서만 변경 가능. Mobile Programming