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:
2 - Ahora creamos un atributo List y creamos una Lista Implicita:
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:
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:
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:
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:
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:
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:
Y dentro de startApp(): creamos nuestro comando volver:
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:
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:
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:
Saludos...
Maty!
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!
Gracias, sigo haciendo el tuto , sirve muchisimo gracias!
ResponderBorrarComo puedo ponerle a los items una imagen de fondo o efectos al ubicarse sobre???
ResponderBorrarhelp!!!