Java/J2ME/List
Содержание
Implicit List
<source lang="java">
/*--------------------------------------------------
- ImplicitList.java
- Example from the book: Core J2ME Technology
- Copyright John W. Muchow http://www.CoreJ2ME.ru
- You may use/modify for any non-commercial purpose
- -------------------------------------------------*/
import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class ImplicitList extends MIDlet implements CommandListener {
private Display display; // Reference to Display object private List lsDocument; // Main list private Command cmExit; // Command to exit private Command cmAdd; // Command to add an element public ImplicitList() { display = Display.getDisplay(this); // Create the Commands cmExit = new Command("Exit", Command.EXIT, 1); cmAdd = new Command("Add", Command.SCREEN, 1); try { // Create array of image objects Image images[] = {Image.createImage("/ff.png"), Image.createImage("/rr.png"), Image.createImage("/new.png")}; // Create array of corresponding string objects String options[] = {" Next", " Previous", " New"}; // Create list using arrays, add commands, listen for events lsDocument = new List("Document Option:", List.IMPLICIT, options, images); lsDocument.addCommand(cmExit); lsDocument.addCommand(cmAdd); lsDocument.setCommandListener(this); } catch (java.io.IOException e) { System.err.println("Unable to locate or read .png file"); } } public void startApp() { display.setCurrent(lsDocument); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { // If an implicit list generated the event if (c == List.SELECT_COMMAND) { switch (lsDocument.getSelectedIndex()) { case 0: System.out.println("Next"); break; case 1: System.out.println("Previous"); break; case 2: System.out.println("New"); break; default: System.out.println("New Element"); } } else if (c == cmAdd) { try { System.out.println("lsDocument.size():" + lsDocument.size()); // Add a new element. Using size() as the insertion point, // the element will appended to the list. lsDocument.insert(lsDocument.size(), " Delete ", Image.createImage("/delete.png")); } catch (java.io.IOException e) { System.err.println("Unable to locate or read .png file"); } } else if (c == cmExit) { destroyApp(false); notifyDestroyed(); } }
}
</source>
List CheckBox
<source lang="java">
//jad file (please verify the jar size) /* MIDlet-Name: ListCheckBox MIDlet-Version: 1.0 MIDlet-Vendor: MyCompany MIDlet-Jar-URL: ListCheckBox.jar MIDlet-1: ListCheckBox, , ListCheckBox MicroEdition-Configuration: CLDC-1.0 MicroEdition-Profile: MIDP-1.0 MIDlet-JAR-SIZE: 100
- /
import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.rumand; import javax.microedition.lcdui.rumandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.List; import javax.microedition.midlet.MIDlet; public class ListCheckBox extends MIDlet implements CommandListener {
private Display display; private Command exit = new Command("Exit", Command.EXIT, 1); private Command submit = new Command("Submit", Command.SCREEN, 2); private List list = new List("Select Media", List.MULTIPLE); public ListCheckBox() { display = Display.getDisplay(this); list.append("Books", null); list.append("Movies", null); list.append("Television", null); list.append("Radio", null); list.addCommand(exit); list.addCommand(submit); list.setCommandListener(this); } public void startApp() { display.setCurrent(list); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command command, Displayable Displayable) { if (command == submit) { boolean choice[] = new boolean[list.size()]; StringBuffer message = new StringBuffer(); list.getSelectedFlags(choice); for (int i = 0; i < choice.length; i++) { if (choice[i]) { message.append(list.getString(i)); message.append(" "); } } Alert alert = new Alert("Choice", message.toString(), null, null); alert.setTimeout(Alert.FOREVER); alert.setType(AlertType.INFO); display.setCurrent(alert); list.removeCommand(submit); } else if (command == exit) { destroyApp(false); notifyDestroyed(); } }
}
</source>
List Demo
<source lang="java">
/* License
* * Copyright 1994-2004 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistribution of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * Redistribution in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Sun Microsystems, Inc. or the names of contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that this software is not designed, licensed or intended * for use in the design, construction, operation or maintenance of any * nuclear facility. */
import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class ListDemoMIDlet extends MIDlet {
private Display display; private int mode = List.IMPLICIT; private Command exitCommand = new Command( "Exit", Command.SCREEN, 2 ); private Command selectCommand = new Command( "Select", Command.OK, 1 ); private Command nextCommand = new Command( "Next", Command.SCREEN, 2 ); public ListDemoMIDlet(){ } protected void destroyApp( boolean unconditional ) throws MIDletStateChangeException { exitMIDlet(); } protected void pauseApp(){ } protected void startApp() throws MIDletStateChangeException { if( display == null ){ // first time called... initMIDlet(); } } private void initMIDlet(){ display = Display.getDisplay( this ); display.setCurrent( new SampleList( mode ) ); } public void exitMIDlet(){ notifyDestroyed(); } public static final String[] items = { "First", "Second", "Third", "Fourth" };
class SampleList extends List implements CommandListener { private int mode; SampleList( int mode ){ super( "", mode, items, null ); addCommand( exitCommand ); addCommand( selectCommand ); addCommand( nextCommand ); setCommandListener( this ); switch( mode ){ case IMPLICIT: setTitle( "Implicit" ); break; case EXCLUSIVE: setTitle( "Exclusive" ); break; case MULTIPLE: setTitle( "Multiple" ); break; } this.mode = mode; } public void commandAction( Command c, Displayable d ){ if( c == exitCommand ){ exitMIDlet(); } else if( c == selectCommand ){ showSelection( false ); } else if( c == SELECT_COMMAND ){ showSelection( true ); } else if( c == nextCommand ){ if( mode == List.IMPLICIT ){ mode = List.EXCLUSIVE; } else if( mode == List.EXCLUSIVE ){ mode = List.MULTIPLE; } else { mode = List.IMPLICIT; } display.setCurrent( new SampleList( mode ) ); } } private void showSelection( boolean implicit ){ Alert alert = new Alert( implicit ? "Implicit Selection" : "Explicit Selection" ); StringBuffer buf = new StringBuffer(); if( mode == MULTIPLE ){ boolean[] selected = new boolean[ size() ]; getSelectedFlags( selected ); for( int i = 0; i < selected.length; ++i ){ if( selected[i] ){ if( buf.length() == 0 ){ buf.append( "You selected: " ); } else { buf.append( ", " ); } buf.append( getString( i ) ); } } if( buf.length() == 0 ){ buf.append( "No items are selected." ); } } else { buf.append( "You selected " ); buf.append( getString( getSelectedIndex() ) ); } alert.setString( buf.toString() ); alert.setTimeout( Alert.FOREVER ); display.setCurrent( alert,display.getCurrent() ); } }
}
</source>
List Implicit
<source lang="java">
//jad file (please verify the jar size) /* MIDlet-Name: ListImplicit MIDlet-Version: 1.0 MIDlet-Vendor: MyCompany MIDlet-Jar-URL: ListImplicit.jar MIDlet-1: ListImplicit, , ListImplicit MicroEdition-Configuration: CLDC-1.0 MicroEdition-Profile: MIDP-1.0 MIDlet-JAR-SIZE: 100
- /
import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.rumand; import javax.microedition.lcdui.rumandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.List; import javax.microedition.midlet.MIDlet; public class ListImplicit extends MIDlet implements CommandListener {
private Display display; private List list = new List("Menu:", List.IMPLICIT); private Command exit = new Command("Exit", Command.EXIT, 1); Alert alert; public ListImplicit() { display = Display.getDisplay(this); list.append("New", null); list.append("Open", null); list.addCommand(exit); list.setCommandListener(this); } public void startApp() { display.setCurrent(list); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command command, Displayable displayable) { if (command == List.SELECT_COMMAND) { String selection = list.getString(list.getSelectedIndex()); alert = new Alert("Option Selected", selection, null, null); alert.setTimeout(Alert.FOREVER); alert.setType(AlertType.INFO); display.setCurrent(alert); } else if (command == exit) { destroyApp(false); notifyDestroyed(); } }
}
</source>
List Item MIDlet
<source lang="java">
/* J2ME in a Nutshell By Kim Topley ISBN: 0-596-00253-X
- /
import java.io.IOException; import java.util.Calendar; import java.util.Date; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Choice; import javax.microedition.lcdui.ChoiceGroup; import javax.microedition.lcdui.rumand; import javax.microedition.lcdui.rumandListener; import javax.microedition.lcdui.DateField; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Gauge; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.ImageItem; import javax.microedition.lcdui.Item; import javax.microedition.lcdui.ItemStateListener; import javax.microedition.lcdui.List; import javax.microedition.lcdui.Screen; import javax.microedition.lcdui.StringItem; import javax.microedition.lcdui.TextField; import javax.microedition.midlet.MIDlet; public class ItemMIDlet extends MIDlet
implements CommandListener, ItemStateListener { // The MIDlet"s Display object private Display display; // Flag indicating first call of startApp protected boolean started; // Exit command private Command exitCommand; // Back to examples list command private Command backCommand; // The example selection list private List examplesList; // The Screens used to demonstrate different Items private Screen[] screens; // The example names. Used to populate the list. private String[] examples = { "StringItem", "TextField", "DateField", "ImageItem", "Gauge", "ChoiceGroup", "List", "Alert", "Sounds" }; // List of alert types private AlertType[] alertTypes = new AlertType[] { AlertType.ALARM, AlertType.CONFIRMATION, AlertType.ERROR, AlertType.INFO, AlertType.WARNING, null }; private String[] alertTypeNames = new String[] { "ALARM", "CONFIRMATION", "ERROR", "INFO", "WARNING", "None" }; protected void startApp() { if (!started) { started = true; display = Display.getDisplay(this); // Create the common commands createCommands(); // Create the screens createScreens(); // Create the list of examples createList(); // Start with the List display.setCurrent(examplesList); } } protected void pauseApp() { } protected void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable d) { if (d == examplesList) { // New example selected int index = examplesList.getSelectedIndex(); display.setCurrent(screens[index]); } else if (c == exitCommand) { // Exit. No need to call destroyApp // because it is empty. notifyDestroyed(); } else if (c == backCommand) { // Go back to main selection list display.setCurrent(examplesList); } else if (c == List.SELECT_COMMAND) { // Selection made in the IMPLICIT LIST handleChoiceSelection((Choice)d); } } public void itemStateChanged(Item item) { if (item instanceof TextField) { System.out.println("Text field content: <" + ((TextField)item).getString() + ">"); } else if (item instanceof DateField) { DateField df = (DateField)item; Date date = df.getDate(); if (date != null) { Calendar cal = Calendar.getInstance(); cal.setTime(date); System.out.println("Date field content set to " + date); } else { System.out.println("Date field content set to null"); } } else if (item instanceof Gauge) { int value = ((Gauge)item).getValue(); System.out.println("Gauge value set to " + value); } else if (item instanceof ChoiceGroup) { handleChoiceSelection((Choice)item); } else { System.out.println("Item state changed in " + item); } } private void createCommands() { exitCommand = new Command("Exit", Command.EXIT, 0); backCommand = new Command("Back", Command.BACK, 1); } private void createList() { examplesList = new List("Select Example", List.IMPLICIT); for (int i = 0; i < examples.length; i++) { examplesList.append(examples[i], null); } examplesList.setCommandListener(this); } private void createScreens() { screens = new Screen[examples.length]; screens[0] = createStringsForm(); screens[1] = createTextFieldForm(); screens[2] = createDateFieldForm(); screens[3] = createImageItemForm(); screens[4] = createGaugeForm(); screens[5] = createChoiceGroupForm(); screens[6] = createListExample(); screens[7] = createAlertForm(); screens[8] = createSoundsForm(); } private void addCommands(Displayable d) { d.addCommand(exitCommand); d.addCommand(backCommand); d.setCommandListener(this); if (d instanceof Form) { ((Form)d).setItemStateListener(this); } } // Example for StringItem private Form createStringsForm() { Form form = new Form("StringItem"); form.append(new StringItem("State ", "OK")); form.append(new StringItem(null, "No label\n")); form.append(new StringItem(null, "Line\nbreak")); form.append(new StringItem("Label", "Text.")); form.append(new StringItem("Label2 ", "Text2.")); addCommands(form); return form; } // Example for TextField private Form createTextFieldForm() { Form form = new Form("TextField"); form.append(new TextField("Any", null, 8, TextField.ANY)); form.append(new TextField("Phone", "1234567890", 10, TextField.PHONENUMBER)); form.append(new TextField("Number", "12345", 8, TextField.NUMERIC)); form.append(new TextField("Password", null, 8, TextField.PASSWORD | TextField.NUMERIC)); addCommands(form); return form; } // Example for DateField private Form createDateFieldForm() { Form form = new Form("DateField"); // Get Calendar for the epoch date and time Calendar baseCal = Calendar.getInstance(); Date baseDate = new Date(0); baseCal.setTime(baseDate); // Get Calendar for now and use the epoch // values to reset the date to the epoch. Calendar cal = Calendar.getInstance(); Date now = new Date(); cal.setTime(now); cal.set(Calendar.YEAR, baseCal.get(Calendar.YEAR)); cal.set(Calendar.MONTH, baseCal.get(Calendar.MONTH)); cal.set(Calendar.DATE, baseCal.get(Calendar.DATE)); DateField timeOnly = new DateField("Time", DateField.TIME); DateField dateOnly = new DateField("Date", DateField.DATE); DateField both = new DateField("Both", DateField.DATE_TIME); timeOnly.setDate(cal.getTime()); dateOnly.setDate(now); both.setDate(now); form.append(timeOnly); form.append(dateOnly); form.append(both); addCommands(form); return form; } // Example for ImageItem private Form createImageItemForm() { Form form = new Form("ImageItem"); try { Image red = Image.createImage("/ora/ch4/resources/red.png"); Image blue = Image.createImage("/ora/ch4/resources/blue.png"); // ImageItems with labels // (1) form.append(new ImageItem("Center", red, ImageItem.LAYOUT_CENTER, null)); // (2) form.append(new ImageItem("Left", red, ImageItem.LAYOUT_LEFT, null)); // (3) form.append(new ImageItem("Right", red, ImageItem.LAYOUT_RIGHT, null)); // (4) form.append(new ImageItem("Default", red, ImageItem.LAYOUT_DEFAULT, null)); // ImageItems with no labels // (5) form.append(new ImageItem(null, blue, ImageItem.LAYOUT_NEWLINE_BEFORE | ImageItem.LAYOUT_CENTER | ImageItem.LAYOUT_NEWLINE_AFTER, null)); // (6) form.append(new ImageItem(null, blue, ImageItem.LAYOUT_NEWLINE_BEFORE | ImageItem.LAYOUT_DEFAULT | ImageItem.LAYOUT_NEWLINE_AFTER, null)); // (7) form.append(new ImageItem(null, blue, ImageItem.LAYOUT_NEWLINE_BEFORE | ImageItem.LAYOUT_RIGHT | ImageItem.LAYOUT_NEWLINE_AFTER, null)); // (8) form.append(new ImageItem(null, blue, ImageItem.LAYOUT_DEFAULT, null)); form.append(new ImageItem(null, blue, ImageItem.LAYOUT_DEFAULT, null)); } catch (IOException ex) { form.append("Failed to load images"); } addCommands(form); return form; } // Example for Gauge private Form createGaugeForm() { Form form = new Form("Gauge"); form.append(new Gauge(null, true, 100, 50)); form.append(new Gauge(null, true, 100, 25)); form.append(new Gauge(null, false, 100, 50)); addCommands(form); return form; } // Example for ChoiceGroup private Form createChoiceGroupForm() { Form form = new Form("ChoiceGroup"); try { Image red = Image.createImage("/ora/ch4/resources/red.png"); Image green = Image.createImage("/ora/ch4/resources/green.png"); Image blue = Image.createImage("/ora/ch4/resources/blue.png"); // Exclusive choice group String[] strings = new String[] { "Red", "Green", "Blue" }; Image[] images = new Image[] { red, green, blue }; ChoiceGroup exGroup = new ChoiceGroup("Choose one", ChoiceGroup.EXCLUSIVE, strings, images); form.append(exGroup); // Multiple choice group ChoiceGroup multiGroup = new ChoiceGroup("Choose any", ChoiceGroup.MULTIPLE); form.append(multiGroup); multiGroup.append("Use SSL", null); multiGroup.append("Reconnect on failure", null); multiGroup.append("Enable tracing", null); } catch (IOException ex) { form.append("Failed to load images"); } addCommands(form); return form; } // Example for List private Screen createListExample() { List list = new List("List", List.IMPLICIT); try { Image red = Image.createImage("/ora/ch4/resources/red.png"); Image green = Image.createImage("/ora/ch4/resources/green.png"); Image blue = Image.createImage("/ora/ch4/resources/blue.png"); list.append("Red", red); list.append("Green", green); list.append("Blue", blue); } catch (IOException ex) { Form form = new Form("Error"); form.append("Failed to load images"); return form; } addCommands(list); return list; } // Example for Alert private Screen createAlertForm() { final Form form = new Form("Alert"); // A ChoiceGroup that allows the user to choose between // a modal Alert or an Alert with a finite timeout. final ChoiceGroup limitGroup = new ChoiceGroup("Timeout", Choice.EXCLUSIVE); limitGroup.append("Forever", null); limitGroup.append("Bounded 5s", null); form.append(limitGroup); // A Gauge that allows the user to choose the // timeout for the Alert. This appears only if // the "Bounded" option is selected. final Gauge gauge = new Gauge(null, true, 30, 5); // A ChoiceGroup that lets the user pick the // type of Alert final ChoiceGroup group = createAlertChoiceGroup(true); form.append(group); // A Command that is used to display the Alert final Command okCommand = new Command("OK", Command.OK, 0); // Add CommandListener for back/exit commands // and the OK command, which is specific to this Form form.addCommand(okCommand); form.addCommand(exitCommand); form.addCommand(backCommand); form.setCommandListener(new CommandListener() { public void commandAction(Command c, Displayable d) { if (c == okCommand) { // Create and display the Alert // Get the alert type from the // second ChoiceGroup int selectedType = group.getSelectedIndex(); AlertType alertType = alertTypes[selectedType]; String name = alertTypeNames[selectedType]; // Get the timeout. This is FOREVER if the // first item in the first ChoiceGroup is // selected. Otherwise it is the value in // the Gauge int timeout = Alert.FOREVER; String timeoutString = "none"; if (limitGroup.isSelected(1)) { // "Bounded" selected - get the timeout. timeout = gauge.getValue() * 1000; timeoutString = gauge.getValue() + "s"; } // Create the Alert and set the timeout Alert alert = new Alert("Alert!", "Alert type: " + name + "\nTimeout = " + timeoutString, null, alertType); alert.setTimeout(timeout); // Display the Alert. display.setCurrent(alert); } else { // Delegate others to the usual commandAction ItemMIDlet.this.rumandAction(c, d); } } }); // Set our own ItemStateListener form.setItemStateListener(new ItemStateListener() { public void itemStateChanged(Item item) { if (item == limitGroup) { if (limitGroup.getSelectedIndex() == 0) { // Get rid of the Gauge form.delete(1); } else { // Add the Gauge form.insert(1, gauge); } } else if (item == gauge) { int value = gauge.getValue(); limitGroup.set(1, "Bounded " + value + "s", null); } } }); return form; } // Example for Sounds private Screen createSoundsForm() { final Form form = new Form("Sounds"); // A ChoiceGroup that lets the user pick the // type of sound final ChoiceGroup group = createAlertChoiceGroup(false); form.append(group); addCommands(form); // Set our own ItemStateListener form.setItemStateListener(new ItemStateListener() { public void itemStateChanged(Item item) { // Get the alert type from the ChoiceGroup int selectedType = group.getSelectedIndex(); AlertType alertType = alertTypes[selectedType]; boolean result = alertType.playSound(display); System.out.println("A sound was " + (result ? "" : "not ") + "played."); } }); return form; } // Handles the selection for a Choice private void handleChoiceSelection(Choice choice) { int count = choice.size(); boolean[] states = new boolean[count]; int selCount = choice.getSelectedFlags(states); if (selCount > 0) { System.out.println("Selected items:"); for (int i = 0; i < count; i++) { if (states[i]) { System.out.println("\t" + choice.getString(i)); } } } else { System.out.println("No selected items."); } int selectedIndex = choice.getSelectedIndex(); System.out.println("Selected index is " + selectedIndex); } // Creates a ChoiceGroup containing a set of Alert types private ChoiceGroup createAlertChoiceGroup(boolean includeNone) { ChoiceGroup group = new ChoiceGroup("Alert Type", Choice.EXCLUSIVE); int count = includeNone ? alertTypeNames.length : alertTypeNames.length - 1; for (int i = 0; i < count; i++) { group.append(alertTypeNames[i], null); } return group; }
}
</source>
multiple Choice List
<source lang="java">
/*--------------------------------------------------
- MultipleChoiceList.java
- Create multiple choice list and save selection
- status of each element in an array.
- Example from the book: Core J2ME Technology
- Copyright John W. Muchow http://www.CoreJ2ME.ru
- You may use/modify for any non-commercial purpose
- -------------------------------------------------*/
import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class MultipleChoiceList extends MIDlet implements CommandListener {
private Display display; // Reference to display object private Command cmExit; // A Command to exit the MIDlet private Command cmView; // View the choice selected private List lsPrefs; // Choice Group of preferences public MultipleChoiceList() { display = Display.getDisplay(this); // Create a multiple choice list lsPrefs = new List("Preferences", List.MULTIPLE); // Append options, with no associated images lsPrefs.append("Auto Indent", null); lsPrefs.append("Replace Tabs", null); lsPrefs.append("Wrap Text", null); cmExit = new Command("Exit", Command.EXIT, 1); cmView = new Command("View", Command.SCREEN,2); // Add commands, listen for events lsPrefs.addCommand(cmExit); lsPrefs.addCommand(cmView); lsPrefs.setCommandListener(this); } public void startApp() { display.setCurrent(lsPrefs); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { if (c == cmView) { boolean selected[] = new boolean[lsPrefs.size()]; // Fill array indicating whether each element is checked lsPrefs.getSelectedFlags(selected); for (int i = 0; i < lsPrefs.size(); i++) System.out.println(lsPrefs.getString(i) + (selected[i] ? ": selected" : ": not selected")); } else if (c == cmExit) { destroyApp(false); notifyDestroyed(); } }
}
</source>
Payment MIDlet
<source lang="java">
import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class PaymentMIDlet extends MIDlet {
private Display display; List options = null; public PaymentMIDlet() { options = new List("Method of Payment", Choice.EXCLUSIVE); } public void startApp() { display = Display.getDisplay(this); options.append("Visa", null); options.append("MasterCard", null); options.append("Amex", null); display.setCurrent(options); } /** * Pause is a no-op since there are no background activities or * record stores that need to be closed. */ public void pauseApp() { } /** * Destroy must cleanup everything not handled by the garbage collector. * In this case there is nothing to cleanup. */ public void destroyApp(boolean unconditional) { }
}
</source>
Travel List
<source lang="java">
import java.io.IOException; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.rumand; import javax.microedition.lcdui.rumandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.List; import javax.microedition.midlet.MIDlet; public class TravelList extends MIDlet implements CommandListener {
private List mList; private Command mExitCommand, mNextCommand; public TravelList() { String[] stringElements = { "A", "B", "C" }; Image[] imageElements = { loadImage("/airplane.png"), loadImage("/car.png"), loadImage("/hotel.png") }; mList = new List("Reservation type", List.IMPLICIT, stringElements, imageElements); mNextCommand = new Command("Next", Command.SCREEN, 0); mExitCommand = new Command("Exit", Command.EXIT, 0); mList.addCommand(mNextCommand); mList.addCommand(mExitCommand); mList.setCommandListener(this); } public void startApp() { Display.getDisplay(this).setCurrent(mList); } public void commandAction(Command c, Displayable s) { if (c == mNextCommand || c == List.SELECT_COMMAND) { int index = mList.getSelectedIndex(); Alert alert = new Alert("Your selection", "You chose " + mList.getString(index) + ".", null, AlertType.INFO); Display.getDisplay(this).setCurrent(alert, mList); } else if (c == mExitCommand) notifyDestroyed(); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } private Image loadImage(String name) { Image image = null; try { image = Image.createImage(name); } catch (IOException ioe) { System.out.println(ioe); } return image; }
}
</source>