J2ME El manejo de los MIDlets.
Otros articulos de J2ME:
RMS: persistencia en J2ME.
RMS: persistencia en J2ME implementacion.
En estas lineas se describira la interaccion entre varias Forms (UI de J2ME) usando el MIDlet como controller (en alguna parte, alguna vez, lei que este fue el proposito de crear el MIDlet tal como lo conocemos).
Basicamente se usaran para este documento 3 elementos de J2ME:
- MIDlet
- Form
- CommandListener
En un caracter practico, la clase MIDlet es el "public static void main(String[] args)" de J2ME, y como tal, consideralo el iniciador de la aplicación.
La Clase Form hereda de javax.microedition.lcdui.Screen y es el contenedor de items tales como: ChoiceGroup, CustomItem, DateField, Gauge, ImageItem, Spacer, StringItem, TextField, que son subclases de javax.microedition.lcdui.Item.
La interface CommandListener gestiona ciertos eventos, exactamente las opciones de la aplicacion.
El codigo siguiente es un ejemplo de una clase MIDlet y dos forms, en su forma basica:
public void startApp() {}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
}
public class Uia extends Form implements CommandListener{
public Uia(){
super("UI A");
}
public void commandAction(Command c, Displayable d) {}
}
public class Uib extends Form implements CommandListener{
public Uib(){
super("UI B");
}
public void commandAction(Command c, Displayable d) {}
}
¿Entonces como lanzamos los objetos Form?
Primero debemos obtener la instancia de la clase Display, se obtiene ejecutando:
Despues de obtener la instancia, ejecutamos:
Ejecutando la linea anterior, se mostrara en la pantalla del dispositivo el titulo "UI A".
Ademas hay que agregar codigo en el metodo "destroyApp(boolean unconditional)" para que se pueda salis de la aplicacion.
El codigo quedaria asi:
private Display display = null;
public void startApp() {
display = Display.getDisplay(this);
showUIB();
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {
if (unconditional){
if (display != null){
display.setCurrent(null);
notifyDestroyed();
}
}
}
public void showUIA(){
display.setCurrent(new Uia(this));
}
public void showUIB(){
display.setCurrent(new Uib(this));
}
}
public class Uib extends Form implements CommandListener{
private Command _UIA = null;
private Command _exit = null;
private Controller controller = null;
public Uib(Controller controller){
super("UI B");
/*
Se asigna el controller a esta clase, con el fin
de poder tener acceso a los metodos para que el
dispositivo muestre otro Form y se pueda salir de
la aplicacion.
*/
this.controller = controller;
/*
Se crean los comandos, es el menu que mostrara
el dispositivo y se agregan al Form.
*/
_UIA = new Command("Ir a UIA" , Command.OK, 0);
_exit = new Command("Salir" , Command.EXIT, 1);
this.addCommand(_UIA);
this.addCommand(_exit);
/*
Se le dice al Form que la clase Uib (ella misma)
es la que va a manejar las opciones
*/
this.setCommandListener(this);
}
public void commandAction(Command c, Displayable d) {
/*
Aqui se manejan las opciones o command.
*/
if (c == _UIA){
controller.showUIA();
} else if (c == _exit){
controller.destroyApp(true);
}
}
}
public class Uia extends Form implements CommandListener{
public Uia(Controller controller){
super("UI A");
}
public void commandAction(Command c, Displayable d) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
<code>
- beto.bateria's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios recientes
hace 5 días 21 horas
hace 5 días 21 horas
hace 5 días 7 horas
hace 45 semanas 4 días
hace 2 años 5 semanas
hace 2 años 9 semanas
hace 2 años 16 semanas
hace 2 años 24 semanas
hace 2 años 27 semanas
hace 2 años 29 semanas