The second version of the HelloWorld application. This version adds a command to a Displayable component and sets a command listener to listen for command activation and take some action in response to it. This J2ME example demonstrates how the Displayable defines the semantics of the command execution.

 import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;

public class HelloWorld2 extends MIDlet
{

  // The Display. This object manages all Displayable
  // components.
  private Display display;

  // The Displayable. This component is displayed on
  // the screen.
  private Form form; // your existing app
  private final String ALERT_LABEL = "Alert Me!";
  private Alert alert;

  // Two commands added to this MIDlet's displayable.
  private Command showAlert;
  private Command sayHi;

  // The instance of the inner class that defines the
  // CommandListener for this MIDlet.

  private MyCommandListener cl = new MyCommandListener();
  
  public HelloWorld2()
  {
    super();
  }
  public void destroyApp(boolean destroy)
  {
    form = null;
    notifyDestroyed();
  }
  public void pauseApp()
  {
  
  }

  public void startApp()
  {
    form = new Form("Hello World");
    String msg = "My second MIDlet!";
    form.append(msg);
    form.setCommandListener(cl);
    showAlert = new Command(ALERT_LABEL,Command.SCREEN,1);
    form.addCommand(showAlert);
    sayHi = new Command("Say Hi", Command.SCREEN, 1);
    form.addCommand(sayHi);
    display = Display.getDisplay(this);
    display.setCurrent(form);
  }

  private class MyCommandListener implements CommandListener
  {
    public void commandAction(Command c, Displayable d)
    {
      alert = new Alert("Button pressed",  
      "The '" + ALERT_LABEL + "' button was pressed",
        null, AlertType.INFO);
      alert.setTimeout(Alert.FOREVER);
      display.setCurrent(alert, form);
    }
  }
}