Lab 4 (Lab 2 on Java ME) Java ME GUI Programming Pervasive Computing Lab Prepared by: Tuan Nguyen
Jan 15, 2015
Lab 4 (Lab 2 on Java ME)Java ME GUI Programming
Pervasive Computing Lab
Prepared by: Tuan Nguyen
MIDP User interface
High level
Low level
Screen
Alert TextBoxListForm
GraphicsCanvas
Form
Picture from: http://www.javaworld.com/javaworld/jw-05-2005/images/jw-0516-midp1.jpg
Let’s Example
Mobile Restaurant App Allow a user to order a
meal remotely using a mobile phone.
This is a list (List class)
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);
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);
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
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.
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); }}
...
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.
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);
Exercise:Improve Mobile Restaurant App
Find the completed code for this app on the subject web site.
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
Graphics
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);
}
}
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
Time for practice