Midlet j2me: conversor mejorado
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;
}
}