Ir al contenido principal

Creando un Menú Principal

Hoy un ejemplo de como crear un menú principal donde el usuario podrá navegar desde allí.

Lo primero es crear nuestro MIDlet, si todavía no conoces esto, te recomiendo que visites: Hola Mundo con Java ME y Comenzando con Java ME.

1 - Como toda aplicación en Java Me, primero creamos un atributo, Display y obtenemos la pantalla:


Display pantalla;
  
    public void startApp() {
        pantalla = Display.getDisplay(this);
    }


2 - Ahora creamos un atributo List y creamos una Lista Implicita:


Display pantalla;
    List menu;
  
    public void startApp() {
        pantalla = Display.getDisplay(this);
      
        menu = new List("Menu Principal", List.IMPLICIT);
    }


3 - Nos toca el turno de agregar los elementos a la lista, que serán nuestros items del menú Principal y mostrar este menú por pantalla:


menu = new List("Menu Principal", List.IMPLICIT);
menu.append("Iniciar Juego", null);
menu.append("Cargar Partida", null);
menu.append("Configuraciones", null);
menu.append("Ayuda", null);
menu.append("Salir", null);

pantalla.setCurrent(menu);


4 - Ya tenemos nuestro menú principal creado, pero todavía no tiene ninguna interacción, tendremos que obtener de alguna manera, el evento cuando el usuario hace clic en algún item del menú, para realizar esto debemos decirle al menú que intercepte este evento, esto lo hacemos:


menu.setCommandListener(this);


Este método configurara la clase que manejara este evento, normalmente se pone que la misma clase maneje el evento, pero podrían hacer que cualquier clase lo realice.

5 - Pero al escribir esa linea nos tirara error, es porque la clase para manejar eventos debe implementar la interface: CommandListener:


public class ClaseDosMidlet extends MIDlet implements CommandListener {

}


Solo debemos agregar implements, que se utiliza para implementar interfaces y el nombre de la clase que maneja el evento.

6 - Todavía siguen apareciendo errores, esto se debe a que a implementar una interface, esta contiene métodos obligatorios que debemos escribir, así que escribimos el siguiente método:


public void commandAction(Command c, Displayable d) {
      
}


Este metodo recibe por parametros:

* Command c : devuelve el comando que ha sido ejecutado.
* Displayable d : devuelve el objeto que se encontraba en pantalla en el momento que se realizo el evento.

7 - Así que dentro de commandAction, debemos primero preguntar si cuando se realizo el evento fue desde el menú, solo hacemos un if comparando el parámetro Displayable con nuestro menú. Y dentro de el un switch del menú y según que opción selecciono el usuario realizara lo que corresponda:


public void commandAction(Command c, Displayable d) {
        if(menu == d){
            switch(menu.getSelectedIndex()){
                case 0:
                    // Iniciar Juego
                    break;
                case 1:
                    // Cargar Partidas
                    break;
                case 2:
                    List nivel = new List("Elegir nivel", List.EXCLUSIVE);
                    nivel.append("Nivel 1", null);
                    nivel.append("Nivel 2", null);
                    nivel.append("Nivel 3", null);
                    nivel.append("Nivel 4", null);
                    nivel.append("Nivel 5", null);

                    pantalla.setCurrent(nivel);
                    break;
                case 3:
                    // Ayuda
                    break;
                case 4:
                    // Salimos de la Aplicacion
                    notifyDestroyed();
                    break;
            }
        }
    }


como pueden observar el switch, se realiza del case 0 al case 4, porque en nuestro menú solo existen 5 elementos, así que eso depende de la cantidad de opciones en el menú.
Dentro de cada Case, podemos hacer lo que sea, aquí le dejamos un pequeño ejemplo de como mostrar otro menú para seleccionar el nivel.

8 - Pero hay un problema al entrar a la opción Configuraciones que nos muestra el menú para elegir el nivel, no podemos volver al menú principal, así que lo primero sera crear un atributo:


Command volver;


Y dentro de startApp(): creamos nuestro comando volver:


volver = new Command("Volver", Command.BACK, 0);


La clase Command recibe por parámetro:

* Titulo : El titulo del comando
* Tipo: El tipo de Comando, se pueden elegir:

Command.BACK
Command.CANCEL
Command.EXIT
Command.HELP
Command.ITEM
Command.OK
Command.SCREEN
Command.STOP

* Prioridad : el nivel de prioridad

Nos queda setear a la lista nivel que se manejen los eventos y agregar nuestro comando volver:


nivel.setCommandListener(this);
nivel.addCommand(volver);


Desde ahora nuestro lista nivel, mostrara por pantalla el comando volver, pero todavía no realiza ninguna acción.

9 - Vamos a darle una acción al comando volver, nos dirigimos al método commandAction: y comparamos si el comando que se presiono es el comando volver:


if(volver == c){
      pantalla.setCurrent(menu);
}


Si el comando que se presiono es igual al comando volver, entonces volvemos a mostrar el menú principal.

Y así pudimos crear nuestro menú principal y manejar sus eventos.

Codigo Completo:


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

/**
 * @author matias
 */
public class ClaseDosMidlet extends MIDlet implements CommandListener {
    Display pantalla;
    List menu;
    Command volver;

    public void startApp() {
        pantalla = Display.getDisplay(this);

        volver = new Command("Volver", Command.BACK, 0);

        menu = new List("Menu Principal", List.IMPLICIT);
        menu.append("Iniciar Juego", null);
        menu.append("Cargar Partida", null);
        menu.append("Configuraciones", null);
        menu.append("Ayuda", null);
        menu.append("Salir", null);
      
        menu.setCommandListener(this);

        pantalla.setCurrent(menu);
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void commandAction(Command c, Displayable d) {
        if(volver == c){
            pantalla.setCurrent(menu);
        }else if(menu == d){
            switch(menu.getSelectedIndex()){
                case 0:
                    // Iniciar Juego
                    break;
                case 1:
                    // Cargar Partidas
                    break;
                case 2:
                    List nivel = new List("Elegir nivel", List.EXCLUSIVE);
                    nivel.append("Nivel 1", null);
                    nivel.append("Nivel 2", null);
                    nivel.append("Nivel 3", null);
                    nivel.append("Nivel 4", null);
                    nivel.append("Nivel 5", null);

                    nivel.setCommandListener(this);
                    nivel.addCommand(volver);

                    pantalla.setCurrent(nivel);
                    break;
                case 3:
                    // Ayuda
                    break;
                case 4:
                    // Salimos de la Aplicacion
                    notifyDestroyed();
                    break;
            }
        }
    }
}


Saludos...
Maty!

Comentarios

  1. Gracias, sigo haciendo el tuto , sirve muchisimo gracias!

    ResponderBorrar
  2. Como puedo ponerle a los items una imagen de fondo o efectos al ubicarse sobre???

    help!!!

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Introducción a LWUIT

Buenas, hoy les presentare una libreria para Java ME, que mejora notablemente la interfaz de usuario: Lightweight UI Toolkit Library, mejor dicho LWUIT. Primero para poder utilizar esta librería tendremos que descargarla. Hacer clic aqui para descargar . Una vez descargada y descomprimida, en cualquier lugar. Procedemos a crear un proyecto nuevo en nuestro NetBeans. y Ingresamos a las propiedades haciendo clic derecho sobre el proyecto: Ingresamos a Librerías y Recursos, y hacemos clic en Agregar Jar/Zip: Y buscamos en donde descomprimimos el archivo: LWUIT.jar Hacemos clic en aceptar y ya tendremos disponible la librería para trabajar en nuestro proyecto. Les dejo un pequeño código de muestra para que se fijen si les funciona todo bien: import com.sun.lwuit.Command; import com.sun.lwuit.Display; import com.sun.lwuit.Form; import com.sun.lwuit.Label; import com.sun.lwuit.animations.CommonTransitions; import com.sun.lwuit.layouts.BorderLayout; import javax.microedition.midlet.*; /**  *

GastosMax - Mi Primera Aplicacion Jave ME

Buenas hoy les presentare mi primera aplicación hecha en Java ME, que es soportada para la mayoría de los celulares del mercado. GastosMax es una simple aplicación con la que puedes llevar un simple detalle de todos tus gastos. Tendras un listado de todos tus gastos y el total de todo lo que llevas gastando. Descargar GastosMax v1.0.0 Aceptamos cualquier sugerencia y opiniones para mejorar la aplicación ;). Imágenes:

MOTODEV SDK for Java ME v3.0 (Emulador)

Para poder probar su aplicación en los diferentes celulares, tendrás que descargar el emulador de cada empresa para verificar si la aplicación funciona en cada celular. Hoy les mostrare como hacer para descargar el Emulador de Java ME de Motorola: 1 - Ingresamos a la Web de Desarrolladores para Motorola ( http://developer.motorola.com/ ) 2 - Pasamos el Mouse sobre "Platforms" y haces clic en Java ME: 3 - Ahora te dirigis a SDKs: 4 - Haces clic en el ultimo enlace: MOTODEV SDK for Java ME 5 - Clic en Download 6 - Por ultimo elegin la version para su Sistema Operativo y lo instalan. Bueno eso es todo por hoy, proximamente un tutorial para agregar los emuladores a Netbeans y como usarlos... Saludos... Maty