Java/J2ME/List

Материал из Java эксперт
Перейти к: навигация, поиск

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>