J2ME Java Tutorial

import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Choice;
import javax.microedition.lcdui.ChoiceGroup;
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;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.TextField;
import javax.microedition.lcdui.Ticker;
import javax.microedition.midlet.MIDlet;
class EntryForm extends Form {
  private TextField symbolField = new TextField("Investment Symbol", "", 6, TextField.ANY);
  private Command exitCommand = new Command("Exit", Command.EXIT, 1);
  private Command getCommand = new Command("Get", Command.SCREEN, 2);
  private ChoiceGroup investmentChoice = new ChoiceGroup("Type", Choice.EXCLUSIVE, new String[]{ "Stock", "Fund" }, null);
  public EntryForm(String title) {
    super(title);
    append(symbolField);
    append(investmentChoice);
    addCommand(exitCommand);
    addCommand(getCommand);
  }
  public TextField getSymbolField() {
    return symbolField;
  }
  public ChoiceGroup getInvestmentChoice() {
    return investmentChoice;
  }
  public Command getExitCommand() {
    return exitCommand;
  }
  public Command getGetCommand() {
    return getCommand;
  }
}
public class ObtainQuoteMIDlet extends MIDlet {
  private Display displayMngr = null;
  private EntryForm entryForm = null;
  private Alert resultsAlert = null;
  private Ticker adTicker = new Ticker("Track your investments");
  public ObtainQuoteMIDlet() {
  }
  private void initListener() {
    ItemStateListener itemListener = new ItemStateListener() {
      public void itemStateChanged(Item item) {
        if ((item == entryForm.getInvestmentChoice())
            && (entryForm.getInvestmentChoice().getSelectedIndex() == 1)
            && !(entryForm.getSymbolField().getString().toUpperCase().endsWith("X"))) {
          Alert symbolAlert = new Alert("Check Symbol", "Mutual Funds end in 'X'", null,
              AlertType.WARNING);
          symbolAlert.setTimeout(Alert.FOREVER);
          displayMngr.setCurrent(symbolAlert, entryForm);
        }
      }
    };
    CommandListener commandListener = new CommandListener() {
      public void commandAction(Command c, Displayable d) {
        if (c == entryForm.getExitCommand()) {
          destroyApp(true);
        } else if (c == entryForm.getGetCommand()) {
          if ((entryForm.getInvestmentChoice().getSelectedIndex() == 1)
              && !(entryForm.getSymbolField().getString().toUpperCase().endsWith("X"))) {
            Alert symbolAlert = new Alert("Check Symbol", "Mutual Funds end in 'X'", null,
                AlertType.WARNING);
            symbolAlert.setTimeout(Alert.FOREVER);
            displayMngr.setCurrent(symbolAlert, entryForm);
          } else {
            if (entryForm.getSymbolField().getString().length() > 0) {
              String sym = entryForm.getSymbolField().getString();
              displayPrice("The price of " + sym + " is $111.19");
            }
          }
        }
      }
    };
    entryForm.setItemStateListener(itemListener);
    entryForm.setCommandListener(commandListener);
  }
  private void displayEntryForm() {
    if (entryForm == null) {
      entryForm = new EntryForm("ObtainQuote");
    }
    initListener();
    displayMngr.setCurrent(entryForm);
  }
  private void displayPrice(String quoteString) {
    if (resultsAlert == null) {
      resultsAlert = new Alert("Quote Price", null, null, AlertType.CONFIRMATION);
      resultsAlert.setTicker(adTicker);
      resultsAlert.setTimeout(Alert.FOREVER);
    }
    resultsAlert.setString(quoteString);
    displayMngr.setCurrent(resultsAlert, entryForm);
  }
  protected void startApp() {
    displayMngr = Display.getDisplay(this);
    displayEntryForm();
  }
  protected void pauseApp() {
  }
  protected void destroyApp(boolean unconditional) {
    notifyDestroyed();
  }
  public void commandAction(Command c, Displayable s) {
  }
}