El conversor de ptas,euros y dolares algo mejorado. Campos que solo admiten números,choices, alertas, dos formularios, etc..

*
 * Conversor
 * Midlet que convierte monedas en dos formularios
 */
package hello;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;


public class Conversor extends MIDlet implements CommandListener {
    private Command exitCommand, goCommand, backCommand;
    private Display pantalla;
    private Form formDatos;
    private TextField cantidad;
    private ChoiceGroup tipoCambio;
    private Form formResultado;
    private StringItem resultado;
    private Alert errorMsg;

    /**
     * Conversor
     * Constructor del Midlet, inicializa todo
     */
    public Conversor() {
        // Get the Display object for the MIDlet
        pantalla = Display.getDisplay(this);
        // Creamos los tres comandos
        exitCommand = new Command("Salir", Command.EXIT, 2);
        goCommand = new Command("Convertir", Command.OK, 2);
        backCommand = new Command("Atrás", Command.BACK, 2);

        // Creamos el primer formulario
        formDatos = new Form("Introducir cantidad");
        // En la cantidad aceptamos solo enteros. Para cualquier
        // otra cosa pondriamos TextField.ANY
        cantidad = new TextField("Cantidad", "", 15, TextField.NUMERIC);


        formDatos.append(cantidad);

        String[] cambios = { "€ a pta","pta a €","€ a $","$ a €" };
        tipoCambio = new ChoiceGroup("Tipo de cambio", List.EXCLUSIVE,cambios, null);
        formDatos.append(tipoCambio);
        
        // Ponemos los comandos para el primer formulario
        formDatos.addCommand(exitCommand);
        formDatos.addCommand(goCommand);
        formDatos.setCommandListener(this);

        // Creamos la pantalla para el resultado
        formResultado = new Form("Resultado al cambio");
        resultado = new StringItem("Resultado:\n", "");
        formResultado.append(resultado);
        

        // Establecemos los comandos para volver atrás y salir
        formResultado.addCommand(backCommand);
        formResultado.addCommand(exitCommand);
        formResultado.setCommandListener(this);
    }

    /**
     * startApp
     * iniciop del Midlet
     */
    public void startApp() throws MIDletStateChangeException {
        pantalla.setCurrent(formDatos);
    }

    /**
     * pauseApp
     * se invoca si se hace una pausa en la aplicación
     */
    public void pauseApp() {
    }

    /**
     * destroyApp
     * Se invoca al destruir la aplicación
     */
    public void destroyApp(boolean unconditional) {
    }

    /**
     * commandAction
     * handler para todos los eventos
     */
    public void commandAction(Command c, Displayable s) {
        if (c == exitCommand) {
            destroyApp(false);
            notifyDestroyed();
        }
        else if (c == goCommand) {
            // si no se han metido datos, sacamos un alert y ponemos el foco
            if (cantidad.getString().trim().equals(""))
            {
                errorMsg = new Alert("Atención","Introduce algo en el campo cantidad",null,AlertType.WARNING);
               pantalla.setCurrent(errorMsg, formDatos);
               return;
            }
            
            // Hacemos el cálculo
           resultado.setText((calcular(Double.parseDouble(cantidad.getString()),tipoCambio.getSelectedIndex()) )) ;

            pantalla.setCurrent(formResultado);
        }
        else if (c == backCommand)
        {
            // Hacemos limpia de la pantalla inicial
            cantidad.setString("");
            
            // Volvemos al inicio
             pantalla.setCurrent(formDatos);
        }
    }

    private String calcular (double cantidad, int tipo)
    {
        String result = "";
        switch (tipo)
        {
                case 0 :
                           result = cantidad +"€ = "+ (cantidad*166.386) +"ptas";
                           break;
                case 1 :
                           result = cantidad +"ptas = "+ (cantidad/166.386) +"€";
                           break;
                case 3 :
                           result = cantidad +"€ = "+ (cantidad*1.2) +"$";
                           break;
                case 4 :
                           result = cantidad +"$ = "+ (cantidad/1.2) +"€";
                           break;
                default:
                            break;
    }
        return result;
    }

}