17
Lab 4 (Lab 2 on Java ME) Java ME GUI Programming Pervasive Computing Lab Prepared by: Tuan Nguyen

Java me lab2-slides (gui programming)

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Java me lab2-slides (gui programming)

Lab 4 (Lab 2 on Java ME)Java ME GUI Programming

Pervasive Computing Lab

Prepared by: Tuan Nguyen

Page 2: Java me lab2-slides (gui programming)

MIDP User interface

High level

Low level

Screen

Alert TextBoxListForm

GraphicsCanvas

Page 3: Java me lab2-slides (gui programming)

Form

Picture from: http://www.javaworld.com/javaworld/jw-05-2005/images/jw-0516-midp1.jpg

Page 4: Java me lab2-slides (gui programming)

Let’s Example

Mobile Restaurant App Allow a user to order a

meal remotely using a mobile phone.

This is a list (List class)

Page 5: Java me lab2-slides (gui programming)

List – a class of Screen

String[] mainCourseOffers={"Steak","Lamb","Chicken"};...

//create the listlstMainCourse = new List("Select main course:",

Choice.MULTIPLE, mainCourseOffers);

//display the list on the screenDisplay.getDisplay(this).setCurrent(lstMainCourse);

Page 6: Java me lab2-slides (gui programming)

Add a Command button to the list

//Create a commandcmdNext = new Command("Next", Command.OK, 1);

//Add a command “Next” to the Main Course listlstMainCourse.addCommand(cmdNext);

//let lstMainCourse listen to the user’s commandslstMainCourse.setCommandListener(this);

Page 7: Java me lab2-slides (gui programming)

Result

The “Next” command does nothing now.

Let’s add another list called “Dessert List”.

When the user selects the Next command, the Dessert List will be displayed on the screen.

The “Next” command button

Page 8: Java me lab2-slides (gui programming)

Create the Dessert list

String[] dessertOffers = {"Ice Cream", "Chocolate Cake", "Orange Juice"};

...//create the Dessert listlstDessert=new List("Select dessert:",Choice.MULTIPLE,

dessertOffers);

//but not display the dessert list until the user selects the “Next” command.

Page 9: Java me lab2-slides (gui programming)

Implement CommandListener class

public class Restaurant extends MIDletimplements CommandListener

...

//process commandspublic void commandAction(Command command, Displayable displayable){

String label = command.getLabel(); if(label.equals("Next")){ Display.getDisplay(this).setCurrent(lstDessert); }}

...

Page 10: Java me lab2-slides (gui programming)

Add an Order Summary screen

Allow the user see what s/he’s ordering. How?1. Create the empty Order

Summary screen (e.g., a form).

2. Add a command “Proceed” to the Dessert list that navigates to the Order Summary screen.

3. Add code in the commandAction method to process the “Proceed” command.

Page 11: Java me lab2-slides (gui programming)

Get the state of all elements of a list

//retrieve selected main coursesboolean[] selectedMainCourses = new boolean[lstMainCourse.size()];lstMainCourse.getSelectedFlags(selectedMainCourses);String strMainCourse = "";for(int i=0; i<lstMainCourse.size(); i++){ if(selectedMainCourses[i]) strMainCourse += mainCourseOffers[i] + ", ";}

//retrieve selected dessertboolean[] selectedDessert = new boolean[lstDessert.size()];lstDessert.getSelectedFlags(selectedDessert);String strDessert = "";for(int i=0; i<lstDessert.size(); i++){ if(selectedDessert[i]) strDessert += dessertOffers[i] + ", ";}//update the Order Summary form according to the selected main courses...sItemMainCourse.setText(strMainCourse);sItemDessert.setText(strDessert);Display.getDisplay(this).setCurrent(frmOrderSummary);

Page 12: Java me lab2-slides (gui programming)

Exercise:Improve Mobile Restaurant App

Find the completed code for this app on the subject web site.

Page 13: Java me lab2-slides (gui programming)

HotelBooking Application

Purpose: a customer wants to book a room at Saville Hotel

The UI can be like this

Items are Form, Gauge, Spacer, ImageItem, TextField , DateField, StringItem, ChoiceGroup

Page 14: Java me lab2-slides (gui programming)

Graphics

Page 15: Java me lab2-slides (gui programming)

javax.microedition.lcdui.Canvas

class MyCanvas extends Canvas {

public void paint(Graphics g) {

// create a 20x20 black square in the centre

g.setColor(0xFF0000); // make sure it is red

g.fillRect(getWidth()/2–10, getHeight()/2–10, 20, 20);

g.setColor(0x0000FF); // make sure it is blue

g.drawString("Hello World", getWidth()/2, getHeight()/2

- 10, Graphics.HCENTER | Graphics.BASELINE);

}

}

Page 16: Java me lab2-slides (gui programming)

References

Vikram Goyal , J2ME Tutorial, http://today.java.net/pub/a/today/2005/02/09/j2me1.html, 02/09/2005

Michael Juntao Yuan & Kevin Sharp, JavaWorld.com, www.javaworld.com/javaworld/jw-05-2005/jw-0516-midp.html, 05/16/2005

http://developer.symbian.com/main/oslibrary/java_papers/midp.jsp http://developers.sun.com/mobility/apis/articles/wsa/ Eric Giguere, Databases and MIDP, Part 1: Understanding the Record

Management System, http://developers.sun.com/mobility/midp/articles/databaserms, 2004

http://www.java2s.com/Code/Java/J2ME/Persistencestoringandshowinggamescores.htm

http://today.java.net/pub/a/today/2005/05/03/midletUI.html?page=4

Page 17: Java me lab2-slides (gui programming)

Time for practice