Vous êtes sur la page 1sur 4

IESTP Abancay

Unid. Didact.: Taller de Aplicaciones Mviles II

V semestre

CP: Computacin e informtica Plan 2008


Sesin N 02

EJERCICIO DE REPASO (use el sdk 3.0 o netbeans)


Crear la Clase Ejemplo
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.Display;
public class Ejemplo extends MIDlet {
protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(new MenuPrincipal(this));
}
protected void pauseApp() { }
protected void destroyApp(boolean arg0)
throws MIDletStateChangeException { }
}
Vea que no ser necesario guardar ni destruir ningn dato en el momento de pausar o destruir la aplicacin. La nica
tarea que realiza esta clase es la de asignar los recursos de la pantalla a la clase MenuPrincipal. Se puede ver cmo
obtiene la pantalla mediante Display.getDisplay(this), y cmo asigna a sta un objeto del tipo Displayable, mediante el
mtodo setCurrent.
Crear la Clase MenuPrincipal
Esta clase muestra el men principal del programa, donde el usuario podr elegir entre salir de la aplicacin, configurar
la visualizacin, o visualizar la imagen. Extiende la clase List En las lneas subrayadas puede verse cmo se construye
como una lista del tipo IMPLICIT, y agrega 3 opciones: Mostrar, Configurar, y Salir. Adems, se designa a s
misma como commandListener (setCommandListener(this);). Para ello es requisito que implemente la interfaz
CommandListener de J2ME (LDC 3), y la funcin commandAction de dicha interfaz (lnea 16). En este ltimo mtodo,
puede verse cmo se comprueba la opcin escogida y, a partir de sta, sale del programa, muestra el objeto Lienzo
(subclase de Canvas) con los dibujos, o muestra el objeto Configuracion (subclase de Form) donde se configuran las
opciones de dibujado.
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class MenuPrincipal extends List implements CommandListener
{
private MIDlet midlet;
private Configuracion config;

(LDC 3)

public MenuPrincipal(MIDlet midlet) {


super("Men Principal",List.IMPLICIT);
append("Mostrar",null);
append("Configurar",null);
append("Salir",null);
setCommandListener(this);
this.midlet=midlet;
config=new Configuracion(midlet,this);
}
public void commandAction(Command command, Displayable displayable) {
String opcion=getString(getSelectedIndex());
if(opcion.equals("Salir")) {
midlet.notifyDestroyed();
} else if(opcion.equals("Configurar")) {
Docente: Ing. Rmulo PEDRAZA RUIZ

(LDC 16)

Pg. 1/4

IESTP Abancay
Unid. Didact.: Taller de Aplicaciones Mviles II

V semestre

CP: Computacin e informtica Plan 2008


Sesin N 02

Display.getDisplay(midlet).setCurrent(config);
} else if(opcion.equals("Mostrar")) {
Display.getDisplay(midlet).setCurrent(
new Lienzo(midlet,this,config.getColorFondo(),
config.getColorTexto(),config.getTexto())
);
}
}
}
Crear la Clase Configuracion
Esta clase se encarga de guardar los datos de configuracin, as como de mostrar en pantalla el formulario para llevar
a cabo tal configuracin.
Para ello, se aade al formulario un elemento del tipo TextField con el valor inicial de Hola Mundo, y dos elementos
ChoiceGroup de seleccin exclusiva y las opciones blanco, negro, azul, rojo y verde.
Esta clase tambin se define a s misma como CommandListener. El nico comando que debe controlar esta vez es el
comando volver.
Como en la clase Lienzo ser necesario obtener los datos de la configuracin deseada por el usuario, se han definido
funciones que obtengan los datos de los Item del formulario (lneas subrayadas).
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
public class Configuracion extends Form implements CommandListener {
private TextField texto=
new TextField("Texto","Hola mundo",15,TextField.ANY);
private String opciones[]={"blanco","negro","azul","rojo","verde"};
private ChoiceGroup colorFG=
new ChoiceGroup("Color
texto",ChoiceGroup.EXCLUSIVE,opciones,null);
private ChoiceGroup colorBG=
new ChoiceGroup("Color
fondo",ChoiceGroup.EXCLUSIVE,opciones,null);
private MIDlet midlet;
private MenuPrincipal menuprincipal;
public Configuracion(MIDlet midlet,MenuPrincipal menuprincipal) {
super("Formulario de configuracin");
append(colorFG);
append(colorBG);
append(texto);
addCommand(new Command("Volver",Command.BACK,1));
setCommandListener(this);
this.midlet=midlet;
this.menuprincipal=menuprincipal;
}
public String getTexto() {
return texto.getString();
}
public int getColorTexto() {
return getColor(colorFG);
}
public int getColorFondo() {
return getColor(colorBG);
}
private int getColor(ChoiceGroup choice) {
String color=choice.getString(choice.getSelectedIndex());
if(color.equals("blanco")) {
return (255*256+255)*256+255;
Docente: Ing. Rmulo PEDRAZA RUIZ

Pg. 2/4

IESTP Abancay
Unid. Didact.: Taller de Aplicaciones Mviles II

V semestre

CP: Computacin e informtica Plan 2008


Sesin N 02

} else if(color.equals("negro")) {
return 0;
} else if(color.equals("azul")) {
return 255;
} else if(color.equals("rojo")) {
return 255*256*256;
} else { //verde
return 255*256;
}
}
public void commandAction(Command command, Displayable displayable) {
if(command.getCommandType()==Command.BACK) {
Display.getDisplay(midlet).setCurrent(menuprincipal);
}
}
}
Crear la Clase Lienzo
Es la clase derivada de Canvas, la cual se encarga nicamente de dibujar la pantalla a partir de los datos de
configuracin que se le pasan por parmetros en el constructor (LDC 09). Observar que en el constructor se carga una
imagen de mapa de bits (lneas subrayadas), por lo que habr que crear una y guardarla como prueba.png en el
directorio res del proyecto.
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
public class Lienzo extends Canvas implements CommandListener {
private int colorFondo,colorTexto;
private String texto;
private Image imagen;
private MIDlet midlet;
private MenuPrincipal menuPrincipal;
public Lienzo(MIDlet midlet,
MenuPrincipal menuPrincipal,
int colorFondo,
int colorTexto,
String texto) {
this.colorFondo=colorFondo;
this.colorTexto=colorTexto;
this.texto=texto;
try {
imagen=Image.createImage("/prueba.png");
} catch(Exception e) {
System.out.println("Error cargando la imagen: "+e.getMessage());
}
this.midlet=midlet;
this.menuPrincipal=menuPrincipal;
addCommand(new Command("Volver",Command.BACK,1));
setCommandListener(this);
}

(LDC 09)

protected void paint(Graphics graphics) {


int w=getWidth(), h=getHeight();
graphics.setColor(colorFondo);
graphics.fillRect(0,0,w,h);
graphics.setColor(colorTexto);
graphics.drawString(texto,w/2,10,Graphics.TOP|Graphics.HCENTER);
graphics.drawImage(imagen,w/2,h/2,Graphics.VCENTER|Graphics.HCENTER);

(LDCs 27 a 34)

Docente: Ing. Rmulo PEDRAZA RUIZ

(LDC 24)

Pg. 3/4

IESTP Abancay
Unid. Didact.: Taller de Aplicaciones Mviles II

V semestre

CP: Computacin e informtica Plan 2008


Sesin N 02

}
public void commandAction(Command command, Displayable displayable) {
if(command.getCommandType()==Command.BACK) {
Display.getDisplay(midlet).setCurrent(menuPrincipal);
}
}
}

Para poder salir de la imagen y volver al men inicial, es necesario crear un comando del tipo BACK en el constructor
(LDC 24). Al igual que las otras clases, Lienzo se establece a s misma como CommandListener, y trata el evento del
comanda en su funcin commandAction (LINEAS DE CDIGO SOMBREADAS).
La funcin principal e imprescindible de Lienzo, como toda clase Canvas es la funcin paint() (LDC 27 a 34), donde se
puede observar cmo a partir de un objeto Graphics, de manera sencilla rellena el fondo de un color, dibuja un texto de
otro color, y dibuja el mapa de bits cargado en el constructor en el centro de la pantalla, utilizando los mtodos
getWidth() y getHeight() de ste, ya que a priori no se sabe la resolucin de la pantalla, ya que puede variar segn el
dispositivo.
Conclusiones:

Docente: Ing. Rmulo PEDRAZA RUIZ

Pg. 4/4

Vous aimerez peut-être aussi