4. Let’s Example
Mobile Restaurant App
Allow a user to order a
meal remotely using a
mobile phone.
This is a list (List class)
5. List – a class of Screen
String[] mainCourseOffers={"Steak","Lamb","Chicken"};
...
//create the list
lstMainCourse = new List("Select main course:",
Choice.MULTIPLE, mainCourseOffers);
//display the list on the screen
Display.getDisplay(this).setCurrent(lstMainCourse);
6. Add a Command button to the list
//Create a command
cmdNext = new Command("Next", Command.OK, 1);
//Add a command “Next” to the Main Course list
lstMainCourse.addCommand(cmdNext);
//let lstMainCourse listen to the user’s commands
lstMainCourse.setCommandListener(this);
7. 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
8. Create the Dessert list
String[] dessertOffers = {"Ice Cream", "Chocolate Cake",
"Orange Juice"};
...
//create the Dessert list
lstDessert=new List("Select dessert:",Choice.MULTIPLE,
dessertOffers);
//but not display the dessert list until the user selects
the “Next” command.
9. Implement CommandListener class
public class Restaurant extends MIDlet
implements CommandListener
...
//process commands
public void commandAction(Command command,
Displayable displayable){
String label = command.getLabel();
if(label.equals("Next")){
Display.getDisplay(this).setCurrent(lstDessert);
}
}
...
10. 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.
11. Get the state of all elements of a list
//retrieve selected main courses
boolean[] 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 dessert
boolean[] 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);
13. HotelBooking Application
Purpose: a customer wants to book a room at
Saville Hotel
The UI can be like this
Items are
Form, Gauge, Spacer, Ima
geItem, TextField
, DateField, StringItem, Ch
oiceGroup
15. 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);
}
}
16. 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/Persistencestoringandshowin
ggamescores.htm
http://today.java.net/pub/a/today/2005/05/03/midletUI.html?page=4