Está en la página 1de 5

Programación para dispositivos móviles en J2ME

Formularios

A continuación, veremos a través de un ejemplo ilustrativo la implementación de los


objetos TextField, DateField y ChoiceGroup en un objeto de tipo Form.

Ejemplo:

Se requiere desarrollar una encuesta a cerca de la aceptación del servicio de


telefonía móvil para los usuarios de Comcel.

La encuesta debe contener las siguientes preguntas:

Nombre.
Fecha de nacimiento.
Sexo.

Las siguientes, se debe calificar con: bueno, regular, malo.

Calificación de la señal.
Calificación servicio al cliente.
Calificación costo servicio.

Es claro que tenemos preguntas abiertas como lo es el nombre, pero también


tenemos preguntas donde solo se puede elegir una respuesta, por ejemplo, el
usuario no podría calificar la señal buena, pero a la vez mala.

Siendo así, el formulario cuenta con diferentes objetos que me permiten especificar
las posibles respuestas según sea la necesidad, para el ejemplo entonces
utilizaremos el objeto TextField para las preguntas abiertas, el objeto ChoiceGroup
para las preguntas cerradas, y el objeto DateField para los campos que tienen que
ver con la fecha.

Implementación del objeto TextField

Lo primero que se debe hacer es instanciar un objeto de la clase TextField:

TextField nombreObjeto = new TextField("Etiqueta","Valor inicial",número de


caracteres que tolera, tipo de caracteres a utilizar);

Como se puede observar, el constructor de la clase Textfield lleva cuatro


parámetros, el primero de ellos indica la etiqueta que habrá de llevar el campo de
texto, en el segundo se debe especificar el valor inicial, el siguiente es la longitud
(en caracteres) que habrá de tolerar el campo y el último indica el filtro a utilizar para
dicho campo, es decir, que caracteres admitirá.
J2ME
Julio César Meza Ramírez
Ingeniero de Sistemas y Telecomunicaciones
El filtro puede ser de los siguientes tipos:

TextField.ANY
TextField.EMAILADDR
TextField.NUMERIC
TextField.DECIMAL
TextField.PHONENUMBER
TextField.PASSWORD
TextField.URL

Para instanciar el objeto para el “nombre” en nuestro ejemplo lo haríamos de la


siguiente manera:

TextField nombre = new TextField("Nombre","",30,TextField.ANY);

Implementación del objeto Datefield

Hasta ahora no se ha descrito, en las clases TextField y TextBox, un método


relativamente fácil para introducir una fecha, los signos "/" en un teléfono son un
poco difíciles de localizar, sin contar con que los números son la última o una de las
últimas opciones en el orden de las teclas de la mayoría de los equipos, estos
problemas no lo son tanto si se utiliza la clase DateField. Enseguida se explica
cómo:

DateField nombreObjeto = new DateField("Etiqueta",tipo de información);

Donde tipo de información puede ser:

DateField.DATE
DateField.TIME
DateField.DATE_TIME

Para instanciar el objeto para la “fecha de nacimiento” en nuestro ejemplo lo


haríamos de la siguiente manera:

DateField nacimiento = new DateField("Fecha de nacimiento”, DateField.DATE)

Implementación del objeto ChoiceGroup

Los grupos de selección o ChoiceGroup, por su nombre en inglés, son listados de


elementos en los que se puede seleccionar uno o varios de ellos y permiten realizar
operaciones (principalmente comparaciones lógicas) con dicha selección. A
continuación, se muestra la sintaxis para instanciar un grupo de selección:

String[] nombreVector = {"Opción uno","Opción dos", “Opción n”};

J2ME
Julio César Meza Ramírez
Ingeniero de Sistemas y Telecomunicaciones
En la línea anterior, se declaro un vector de tipo cadena que contiene las etiquetas
de las opciones del grupo de selección.

ChoiceGroup nombreObjeto = new ChoiceGroup("Etiqueta",TipoChoiceGroup,


vectorEtiquetas, vectorIconos);

Donde TipoChoiceGroup puede ser:

ChoiceGroup.EXCLUSIVE: Solo permite seleccionar una opción.

ChoiceGroup.MULTIPLE: Permite seleccionar múltiples opciones.

ChoiceGroup.POPUP: Permite escoger una sola opción, pero, a diferencia del


exclusivo, las muestra en un menú desplegable.

Para instanciar el objeto para la “sexo” en nuestro ejemplo lo haríamos de la


siguiente manera:

String[] generos = {"Femenino","Masculino"};


ChoiceGroup sexo = new ChoiceGroup("Sexo",ChoiceGroup.EXCLUSIVE, generos,
null);

Después de tener todo esto claro, ya podemos proceder a realizar el desarrollo


completo de la encuesta:

//Importo las librerias necesarias


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

//Declaro la clase
public class Formulario extends MIDlet implements CommandListener {

//Declaro los objetos necesarios


private Command salir;
private Display display;
//aqui declaro el formulario
private Form screen;

public Formulario () {

// Obtención del objeto Display.


display = Display.getDisplay(this);

// Creación del comando para salir


salir = new Command("Salir", Command.EXIT,2);

J2ME
Julio César Meza Ramírez
Ingeniero de Sistemas y Telecomunicaciones
// Creación de la pantalla principal, la cual es un formulario
screen = new Form("Encuesta Comcel");

// Creación de los campos del formulario


TextField nombre = new TextField("Nombre","",30,TextField.ANY);
DateField nacimiento = new DateField("Fecha de nacimiento",DateField.DATE);
// Creación de las opciones de género
String[] generos = {"Femenino","Masculino"};
ChoiceGroup sexo = new ChoiceGroup("Sexo",ChoiceGroup.EXCLUSIVE, generos,
null);

//creacion de las preguntas de aceptacion


String[] califica = {"Bueno","Regular","Malo"};
ChoiceGroup señal = new ChoiceGroup("Como califica la
señal",ChoiceGroup.EXCLUSIVE, califica, null);
ChoiceGroup cliente = new ChoiceGroup("Como califica el serv. al
cliente",ChoiceGroup.EXCLUSIVE, califica, null);
ChoiceGroup costo = new ChoiceGroup("Como califica el costo del
servicio",ChoiceGroup.EXCLUSIVE, califica, null);

// Adición de los campos al formulario (el objeto screen)


screen.append(nombre);
screen.append(nacimiento);
screen.append(sexo);
screen.append(señal);
screen.append(cliente);
screen.append(costo);

// Adición del comando salir


screen.addCommand(salir);
screen.setCommandListener(this);
}

public void startApp() throws MIDletStateChangeException {


// Seleccionamos la pantalla a mostrar
display.setCurrent(screen);
}

public void pauseApp() {}

public void destroyApp(boolean incondicional) {}

public void commandAction(Command c, Displayable s) {


// Salir
if (c == salir) {
destroyApp(false);
notifyDestroyed();
J2ME
Julio César Meza Ramírez
Ingeniero de Sistemas y Telecomunicaciones
}
}
}

Taller:

Implementar los objetos: TextField, DateField y ChoiceGroup con sus diferentes


tipos y notar sus diferencias.

J2ME
Julio César Meza Ramírez
Ingeniero de Sistemas y Telecomunicaciones