Heyyyyyyyyyyyyyyy

Aprende a programar microcontroladores en C... http://tecdigitaldelbajio.com/software-tarjeta.html

jueves, 27 de agosto de 2009

Ejemplo #11 Creación de un menú usando objetos de tipo List



Seguimos en este ejemplo viendo más problemas que se resuelven usando la instrucción if. Antes de iniciar con el ejemplo hablemos un poquito de la jerarquía de clases de Java Micro Edition.
La siguiente figura muestra la jerarquía de clases definida por los creadores de Java



Bueno yo la simplifique un poquito, me falto agregar algunas clases que todavía no se han visto en el blog, pero eso es lo de menos por que más adelante serán vistas. En la imagen fácilmente se identifican las clases con las que ya se ha trabajado, ChoiceGroup, TextField, etc. Todas ellas como se observa provienen de la clase Form, o más correcto son subclases de la clase Form.

En el ejemplo #11 vamos a utilizar una clase que esta al mismo nivel que un Form, la clase List. Esta clase esta excelente para crear menú de opciones como se verá más adelante en el ejemplo.


La clase List



Esta clase es muy parecida a la clase ChoiceGroup, nos permite mostrar un grupo de opciones para que el usuario elija una de ellas. La calse List puede ser de tres tipos:


• Implícitas
• Exclusivas
• Múltiples


Listas Implícitas

Este tipo de listas están perfectas para realizar un menú de opciones, ya que por sí mismas al seleccionarse activan un evento, el evento podría ser por ejemplo abrir un formulario (Form) para realizar algún cálculo, voy a repetirlo, este tipo de listas: “generaran un evento” es decir no se requiere ningún okCommand después de seleccionarse.


La figura siguiente muestra la imagen de una lista implícita




Listas Exclusivas y Múltiples


La figura siguiente muestra la imagen de este par de listas al lector se le van a hacer muy conocidas, puesto que si ha seguido el blog ya habrá trabajado con ChoiceGroup pues estos como puede verse en la imagen son idénticos a la lista mostrada enseguida.




No se entrará en detalles sobre este tipo de listas, se manejan igual que los ChoiceGroup, se usa el método getSelectIndex() para identificar que elemento se selecciono en las listas de tipo “exclusive” y el método getSelectFlag() para las listas de tipo múltiple.

Como crear objetos de tipo List desde netBeans

 


El proceso para crear este tipo de listas es bien sencillo solo se arrastran y sueltan en la vista de flujo de NetBeans. En la figura siguiente se muestra lo mencionado en este párrafo.




En la figura se observan tres grandes pasos que se realizan al trabajar con las listas, arrastrar y soltar (1), agregar los elementos necesarios (2) y conectar las acciones (3).


En la figura se observa como el método Started del dispositivo está conectado a la lista (todos los anteriores ejemplos estaban conectados a un Form). La conexión que sale de este método es lo primero que se ejecuta en el celular, en nuestro caso la lista que es la que contendría un hipotético menú de opciones deberiá ser lo primero que se mostraría en la pantalla del celular, esa es la razón de la conexión con el método Started contrario a todos los ejemplos donde se conectaban a un Form.

Por otro lado en la figura se observan dos elementos en la lista, llamados List Element 1 y List Element 2, véase como el primer elemento de la lista se conecta al Form, esto significa que “cuando seleccione el List Element 1 muestramé el Form”. Entonces directamente puedo mandar llamar los Form que sean necesarios.


Bueno basta de teoría, quizá el ejemplo #11 que se muestra enseguida, haga que todas las dudas que han surgido se aclaren, así que pasemos a ver de que trata.


Ejemplo # 11 Menú de opciones



Realizar un programa para el celular que sea capaz de mostrar un menú con las siguientes opciones:


• Área de un círculo.
• Obtener número mayor
• Ecuación cuadrática.
• Salir


El programa deberá ser capaz de realizar la operación seleccionada por el usuario.


Observaciones:

La opción “Área de un circulo”, pide el radio del circulo y calcula su área. La opción de “Obtener número mayor” deberá pedir tres números solamente e indicará cual es el mayor de los tres. Para la opción “Ecuación cuadrática” usar la formula general y tener cuidado porque puede ser que la solución tenga raíces imaginarias.

Solución

Paso 1 Creación del menú

Para esta opción simplemente creamos la lista con las opciones mencionadas, para cada opción se crea un Form y se realizan las conexiones necesarias. La figura siguiente muestra la creación de la lista y se muestran las conexiones para dos opciones nada más.



En la figura se remarca que se requieren dos comandos un okCommand encargado de realizar la operación necesaria y un exitCommand que nos regresa al menú principal.

Paso #2 Agregar interfaz de usuario para cada opción

En la vista de flujo se da doble clic para que se abra cada Form y así poder agregar los elementos necesarios para la interfaz, como ya se ha realizado en otros ejemplos. La figura siguiente muestra la interfaz de usuario para la opción “Área de un círculo”



En resumen la interfaz de usuario para cada opción es la siguiente:

Opción 1: Un TextField para ingresar el radio y un StringItem para mostrar el resultado.
Opción 2: Tres TextField para ingresar los tres números y un StringITem para mostrar el resultado.
Opción 3: Tres TextField para ingresar los tres coeficientes de la ecuación y un Stringitem para mostrar el resultado.

Paso #3 Agregar el código en cada form

Cada Form tiene un okCommand para ejecutar la acción que se pide, dando clic derecho se tiene acceso a insertar el código como ya se ha visto en los Ejemplos #8 y #9. Aquí no voy a entrar en detalle del código, en teoría el lector debe tener idea de cómo hacer dicho código, mejor en el video que se muestra más adelante se puede ver el código con exactitud, agrandes rasgos lo que se realiza para cada opción es lo que sigue:

Opción 1: Leer el valor que se ingreso de radio, se aplica la formula y se muestra el resultado.
Opción 2: Leer los tres números y luego hacer tres comparaciones para saber cual es el mayor.
Opción 3: Leer los tres coeficientes, verificar si se puede resolver la ecuación y si es así aplicar la formula y mostrar los resultados y si no enviar mensaje de que tiene raíces imaginarias.

Paso #4 Probar

Pues ya finalmente se prueba el ejemplo y se verifica que no se tengan errores si los hay se corrige el código hasta que quede listo.

Video Tutorial

Todo lo dicho anteriormente se puede ver quizá más fácil desde el siguiente video tutorial que muestra la solución para este ejercicio.





Código Fuente

Dando clic aquí se puede bajar el código fuente, por si te hace falta.




8 comentarios:

  1. tu curso esta extraordinario quizas podrias a yudarme a crear un programa para que corte llamadas automaticacamente al llegar a un tiempo determinado de minutos que uno elija,gracias.

    ResponderEliminar
  2. Excelente esto me sirve de mucho para los menues de mi aplicacion, y me acabo de dar cuenta que se pueden colocar imagenes a cada elemento de la list asi puedo improvisar botones :)

    ResponderEliminar
  3. Estimado:

    Es posible a traves de alguna herramienta capturar una imagen que el celular graba?, por ejemplo, una pantalla realizada en NetBeans o Java ME y que en esta pantalla se pueda ver lo que el celular ( la camara interna del celular)esta observando y o gravando , mi idea es poder gravar una imagen y realizarle un tratamiento a esta imagen, pero una imagen dinamica, en movimiento, con la camara interna del celular. para asi poder transformar esta imagen en una matriz ( tratamiento de imagenes) y poderla manipular. A y lo otro, Es posible a traves de Java ME o NetBeasn controlar el minipuesrto USB del celular? y como podria hacerlo..por ejemplo, para prender unos leds desde el celular??

    Atte

    Cristian

    ResponderEliminar
  4. Hola Cristian, si claro que es posible lo que mencionas, de echo Sun (los creadores de Java ME) crearon una libreria, ellos le llaman API, se llama Mobile Media API, encuentras información aqui: http://www.j2ee.me/products/mmapi/ .Hay que leer la documentación para ver como se usa para tu aplicación, yo nunca la he usado pero según sirve para controlar audio y video del dispoitivo...lo otro, Es posible usnado una API, la comunicación por medio del USB pero a una PC checa http://www.steelbrothers.ch/jusb/index.html
    Si deseas encender LEDs no se puede, directamente, pero seria mas emocionante si enciendes leds usando el bluetooth (sin cables), hay modulos como el de Parallax: http://www.parallax.com/StoreSearchResults/tabid/768/txtSearch/bluetooth/List/0/SortField/4/ProductID/550/Default.aspx que se conecta a un microcontrolador, además conectas los LEDS al micro y despues se diseña un programa para el celular que manipule el bluetooth del celular, el modulo recibe eldato el microcontrolador lo procesa y enciende o apaga los LEDs o cosas mas complicadas comoel control de un robot.

    saludos
    Doñate

    ResponderEliminar
  5. Te felicito esta muy interesante tus aportes

    ResponderEliminar
  6. hey hermano qeu tal!!! me parece increible esta ayuda tuya para los que estamso empezando.. lo haces muy pedagojicamente.. excelente... tengo un problema.. estoy empezando con esto.. y lo entiendo a la perfeccion.. pero..en mi celular no se ejecuta como en la simulacion... tengo un nokia 5200... a diferencia de los proyectos que tu creas.. a mi.. la plataforma de emulacion no es otra qeu: SUN JAVA(TM) WIRELESS TOOLKIT 2.5.2 FOR CDLC.. Y CREO QEU ES ALGO ASOCIADO A ESTO LO QUE ME IMPIEDE CORRERLO EN MI TELEFONO CELULAR.. COMO PODRIA CORREGIR YO ESTE ERROR!! OARA QUE CORRA EN MI CELULAR.. O CUALQUIER OTRO????? GRACIAS..... ESTARE MUY MUY AGRADECIDO CON LA RESPUESTA!!

    ResponderEliminar
  7. ¿Y COMO SERIA ENTONCES UTILIZANDO ECLIPSE?... LO USO PORQUE GASTA MENOS MEMORIA QUE EL NETBEANS

    ResponderEliminar
  8. ¿Y COMO SERIA ENTONCES UTILIZANDO ECLIPSE?... LO USO PORQUE GASTA MENOS MEMORIA QUE EL NETBEANS

    ResponderEliminar