Ir al contenido principal

Escuchar los cambios en un Formulario

Hola, ayer un usuario le surgió la duda de como modificar un TextField desde la opción que se elija de un ChoiceGroup y aquí les dejo un pequeño tuto que muestra como realizar cambios a partir de cambios que sufra el formulario, como por ejemplo: el usuario elije una opción de un ChoiceGroup, el usuario escribe en un TextField y cualquier otro cambio que el usuario produzca sobre el formulario.

1- Creamos nuestro MIDlet y creamos un Formulario:


public class InicioMidlet extends MIDlet {
    Display pantalla;
    Form formulario;
    boolean inicio = false;

    public void startApp() {
        if(!inicio){
            pantalla = Display.getDisplay(this);
            inicio = true;

            formulario = new Form("Mi Formulario");
        }

        pantalla.setCurrent(formulario);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

}



2 - Ahora creamos los items del Formulario, en este caso un TextField y un ChoiceGroup:


// choice y text, están declarados como atributos



choice = new ChoiceGroup("Choice:", ChoiceGroup.EXCLUSIVE);
choice.append("Opcion A", null);
choice.append("Opcion B", null);
choice.append("Opcion C", null);

text = new TextField("Texto:", "", 30, TextField.ANY);



3 - Agregamos estos items al formulario:


formulario.append(text);
formulario.append(choice);



4 - Para poder escuchar los cambios en el formulario, nuestra clase debe implementar la interface: ItemStateListener, así que la implementamos en nuestra clase MIDlet:


public class InicioMidlet extends MIDlet implements ItemStateListener {


5 - Al implementar ItemStateListener, deberemos crear el método: itemStateChanged


public void itemStateChanged(Item item) {

}


6 - Ahora le agregamos al formulario que nuestra clase escuchara estos cambios:


formulario.setItemStateListener(this);


7 - Ya tenemos nuestro formulario capaz de escuchar todos los cambios que se produzcan. Si se elije una opción en el ChoiceGroup agregamos un texto predeterminado al TextField entonces:


// Si el item que cambio fue el ChoiceGroup

if(item == choice){

            // Segun el item seleccionado en el ChoiceGroup agregamos el texto
            switch(choice.getSelectedIndex()){
                case 0:
                    // Si eligió la opcion A escribimos "Lola" en el TextField
                    text.setString("lola");
                    break;
                case 1:
                     // Si eligió la opcion B escribimos "mono" en el TextField
                    text.setString("mono");
                    break;
                case 2:
                     // Si eligió la opcion C escribimos "caso" en el TextField
                    text.setString("caso");
                    break;
            }
        }



8 - Así podemos escuchar los distintos cambios que se producen en un Formulario. Cualquier duda que tuvieran pueden dejarla aquí o directamente en el Grupo de Java ME.

Codigo Completo:


public class InicioMidlet extends MIDlet implements ItemStateListener {
    Display pantalla;
    Form formulario;
    ChoiceGroup choice;
    TextField text;
    boolean inicio = false;

    public void startApp() {
        if(!inicio){
            pantalla = Display.getDisplay(this);
            inicio = true;

            choice = new ChoiceGroup("Choice:", ChoiceGroup.EXCLUSIVE);
            choice.append("Opcion A", null);
            choice.append("Opcion B", null);
            choice.append("Opcion C", null);

            text = new TextField("Texto:", "", 30, TextField.ANY);

            formulario = new Form("Mi Formulario");
            formulario.setItemStateListener(this);
            formulario.append(text);
            formulario.append(choice);
        }

        pantalla.setCurrent(formulario);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void itemStateChanged(Item item) {
        if(item == choice){
            switch(choice.getSelectedIndex()){
                case 0:
                    text.setString("lola");
                    break;
                case 1:
                    text.setString("mono");
                    break;
                case 2:
                    text.setString("caso");
                    break;
            }
        }
    }

}



Saludos...
Maty!

Comentarios

  1. Hola. Aplico el codigo pero al ejecutarlo en el emulador no cambia el text con el cambio del choice.

    ResponderBorrar
  2. es raro, este mismo ejemplo me funciona bien en mi emulador,

    te esta tirando algún error?

    has importado las librerías, ya que no están puestas en el código ?

    estas trabajando sobre MIDP 2.0 ?

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Leyendo los datos del Form

Buenas, hoy continuaremos nuestro ejemplo: Trabajando con la Clase Form . Ahora le agregamos alguna funcionalidad a nuestro formulario y mostraremos como obtener los datos que el usuario ingrese. 1 - Primero crearemos un atributo de Tipo: Command private Command guardar; 2 - Creamos nuestro Comando guardar: guardar = new Command("Guardar", Command.OK, 0); La clase Command recibe por parámetros:  * Titulo : El nombre del comando  * Tipo: El tipo de Comando podrás elegir entre: Command.BACK Command.CANCEL Command.EXIT Command.HELP Command.ITEM Command.OK Command.SCREEN Command.STOP Según tu comando deberás elegir el que mas corresponda con la acción de tu comando. 3 - Ahora tendremos que agregar nuestro comando al formulario, pero primero deberemos implementar la interface de CommandListener a nuestro MIDlet para que pueda recibir los comandos que agreguemos: public class ClaseTresMidlet extends MIDlet implements CommandListener Al im...

Hola Mundo con Java ME

Buenas... Hoy un pequeño tutorial para comenzar con NetBeans y observar como crear nuestra primer aplicación con JAVA ME. 1 - Abrimos NetBeans 2 - Vamos a Archivo -> Proyecto Nuevo (Ctrl + Mayus + N) 3 - Creamos un Proyecto de Tipo: Java ME -> Mobile Application y hacemos clic en Siguiente. 4 - Aqui definimos el Nombre de nuestro Proyecto y la ubicacion. Proyect Name (Nombre del Proyecto). Y dejamos solo la  casilla seleccionada de Set as Main Project. * Set as Main Project: El proyecto se fija como Principal * Create Hello MIDlet: Seleccionando esta casilla nos creara automáticamente un Hola Mundo, pero esta clase tendrá muchos componentes que por el momento no es necesario que lo sepan, además de tener mucho código y ya asustarlos de una xD. Hacemos clic en Siguiente. 5 - En este paso podremos elegir el Emulador con que probaremos nuestra aplicación y las configuraciones de la Aplicacion. Es recomendable seleccionar CLDC-1.1 y MIDP-2.0 ya que son los estándares que soportan...

Hola Mundo en Canvas

Buenas, después de varios días sin actualizar, disculpen fueron días de parciales y no tuve mucho tiempo para poder escribirles... Hoy les mostrare como iniciar su proyecto a bajo nivel, la forma de crear todo por nosotros mismos. 1 - Primero creamos un proyecto, y creamos un MIDlet vació. 2 - Creamos una Nueva clase de java: public class CanvasHolaMundo { } 3 - Hacemos que nuestra clase herede (extends) de Canvas: public class CanvasHolaMundo extends Canvas { } Deberán importar la librería: "import javax.microedition.lcdui.Canvas;", como logran ver solo anteponiendo la palabra "extends" y el nombre de la clase ya se logra hacer una herencia. 4 - Al heredar de Canvas esta clase nos obliga a crear un método: public class CanvasHolaMundo extends Canvas {     protected void paint(Graphics g) {            } } Este método paint recibe el objeto Graphics que nos permiti...