Programando con J2ME. Rogelio Ferreira Escutia

Documentos relacionados
Programación para sistemas en red IV. Tomar información desde la pantalla

INTRODUCCIÓN A LA PROGRAMACIÓN DE DISPOSITIVOS MÓVILES

J2ME (Java to Micro Edition)

J2ME Programando un cronómetro para nuestro celular

Java TM MicroEdition -Conceptos Básicos-

>> Programación de dispositivos móviles.

0DQXDOGHGHVDUUROORGH DSOLFDFLRQHVHQ-0( 9HUVLyQGHOGRFXPHQWR )HFKDGHOGRFXPHQWRGH0DU]RGH

Programación para sistemas en red IV. Manejo de gráficos

Programación para sistemas en red IV. Conceptos básicos II

Programació de jocs per mòbils amb J2ME.

PROGRAMACIÓN DE JUEGOS PARA MÓVILES CON J2ME

Java, JavaME y el entorno Eclipse - Ejercicios

Identificar problemas y proponer soluciones integrando las tecnologías emergentes en Internet.

DISEÑO DE UN APLICATIVO WEB PHP PARA LABORATORIO DE FÍSICA UNAC CORPORACIÓN UNIVERSITARIA ADVENTISTA HOOVER NEY RENDÓN GONZÁLEZ

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2007/08

Scientia Et Technica ISSN: Universidad Tecnológica de Pereira Colombia

Capítulo 5 Introducción al Desarrollo de Aplicaciones Móviles usando J2ME

Tema: Herramientas UML, Análisis y diseño UML

Programación Java J2ME: Java para dispositivos móviles

MANUAL DE USUARIO PARA LA DECLARACIÓN INFORMATIVA SOBRE EL ISR DIFERIDO EN CONSOLIDACION FISCAL 19-A Versión 2.0.0

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Java Avanzado Facultad de Ingeniería. Escuela de computación.

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA

JavaScript. Rogelio Ferreira Escutia

Soporte a Desarrolladores. Resolucionando Problemas Comunes de Conectividad

Programación J2ME con Netbeans. Interfaz gráfico para el tetris Septiembre de 2006

Qué ofrece Autentia Real Business Solutions S.L?

Desarrollo de software para móviles con Java 2 Microedition

Tema 4. Excepciones en Java

Android Manejo de Eventos. Rogelio Ferreira Escutia

Capítulo 7. Introducción a las Interfaces Gráficas de usuario. Continuar

Captura de pantallas en Word

MANUAL AB TUTOR CONTROL

Desarrollo de aplicaciones gráficas

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO REDES Y TELEPROCESO I GUIA DE LABORATORIO PROGRAMACION BASICA DE SWITCHES

CEDIS SISTEMA ADMINISTRATIVO PARA EL CONTROL DE BARES Y RESTAURANTES SOFT RESTAURANT (Versión 8.0.0) National Soft de México

Programación de sistemas

Diagramas de secuencia

Qué ofrece Autentia Real Business Solutions S.L?

Clase adicional 2. Estructuras básicas de control. Temas

Guía para la creación de Sociedades por Acciones Simplificadas S.A.S.

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Ficha de Aprendizaje N 1

Decenio de las personas con Discapacidad en el Perú Año de la consolidación del Mar de Grau

Ejercicio 3. Manejo de la Vista y Eventos en Android Ejercicio 3 Curso de Android con Java Derechos Res Dere e c rvados hos Res Gl e obal rva

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

LENGUAJE DE PROGRAMACION I. Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE. Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1

CPOS. Software Punto de Ventas cpos

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Modulo 11. Clases y Objetos en Java

EXPERTO EN DESARROLLO DE APLICACIONES PARA DISPOSITIVOS MÓVILES

Manual de usuario de cga-comparte-impresora-v4

Manual de Usuario de la Aplicación Web Gestión de Convenio y Becas - RELEXT 2015 UNIVERSIDAD ESTATAL PENÍNSULA DE SANTA ELENA

Uso de Java Swing. Noviembre de 2013

Manual de uso WebSphere Studio Device Developer 5.6

Programación Avanzada Ingeniería Civil en Computación

PROCEDIMIENTOS AREA TECNICA OFFICEBANKING

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

FACULTAD DE INGENIERIA EN ELECTRICIDAD Y COMPUTACION SISTEMA NEMESIS MANEJADOR DE TRABAJOS COLABORATIVOS

Manual Power Point Imprimir Presentaciones

Qué ofrece Autentia Real Business Solutions S.L?

Ejemplo de GUI con Swing

PROCEDIMIENTO PARA EL PAGO DE DERECHOS DE REGISTRO PÚBLICO DE LA PROPIEDAD A TRAVÉS DE INTERNET

Guía para factura con moneda extranjera

INSTRUCTIVO DE SISTEMA DE INFORMACIÓN. Contenido

Interfaces gráficas I

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Capigono punto de venta (Cajero) Sin temor al infinito Calle 67 No Penthouse, Bogota Colombia Tel (57-1)

NuevaTel PCS de Bolivia S.A. VIVA 3G. Manual de usuario. Version 1.0

COBHTTPD-CGILIB. Librería para creación de Paginas web Dinámicas con COBOL. Manual de Templates. COBHTTPD Manual de Templates

MANUAL DE USUARIO. Sistema CLASS Profesores

Centro de Bachillerato Tecnológico. Manual de prácticas. Visual Basic 6.0. Nivel Básico. Industrial y de servicios No. 231.

Registro Evaluaciones Alumnos de Primaria

Pasos a seguir para crear una aplicación visual en el lenguaje de programación Java con Netbeans IDE.

Manual de Aleph catalogación (Módulo)

Formación a distancia de EXPERTO EN PROGRAMACIÓN EN JAVA

Java en 2 horas. Rodrigo Santamaría

Desarrollando aplicaciones mediante componentes

Clase 2: Arquitectura de Software

Tema 6. Gestión dinámica de memoria

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

Manual del Usuario. Sistema de Citas de Asesorías

Anexo C. Manual del usuario

Evaluación 1: Entorno y primeros pasos

LABORATORIO Nº 5 FORMULARIOS EN EXCEL

1. Creamos un nuevo proyecto del tipo Aplicaciones de Windows Forms (Visual C#) en Visual Studio.

Normalmente, los programas son ejecutados de forma secuencial. Único flujo de control

! Introducción. ! Contenidos

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Programación de Dispositivos Móviles

FORMULARIO HTML PREPARACION DEL FORMULARIO. Que información debes solicitar al visitante de tu web?

Sistema de Aprobación de Temas y Temarios. 30/08/2012 DST-FIEC

Interfaces y Clases Internas. ELO329: Diseño y Programación Orientados a Objetos

MANUAL DE USUARIO PEXIM SOLICITAR PERMISOS DE IMPORTACIÓN Y EXPORTACIÓN CAPTURISTA GUBERNAMENTAL

SIIGO WINDOWS. Proceso de Recupera. Cartilla I

Tema: Repaso sobre el uso del IDE de Microsoft Visual C#.

Tema: Introducción al IDE de Microsoft Visual C#.

Desarrollo de Aplicaciones Java para Dispositivos Móviles J2ME

Transcripción:

Programando con J2ME Rogelio Ferreira Escutia

MIDlet mínimo 2

Primer MIDlet Todos los MIDlets deben tener una clase principal que herede de la clase javax.microedition.midlet", contenida en el API MIDP estándar. Esta clase define varios métodos, de los cuales los mínimos son los siguientes: startapp() - Lanza el MIDlet pauseapp() - Para el MIDlet DestroyApp() - Destruye el MIDlet Desarrollo de juegos con J2ME, Manuel Jesús Prieto Marín, Primera Edición, Alfaomega, México abril 2005 3

MIDlet mínimo La estuctura mínima para un programa J2ME queda de la siguiente manera: import javax.microedition.midlet.*; public class hola extends MIDlet { public void startapp() { } public void pauseapp() { } public void destroyapp(boolean unconditional) { } } 4

Desplegar Información 5

Objeto Display (1) Para hacer el primer programa que imprima un mensaje en pantalla requerimos varias cosas mas. Primero deberemos agregar la clase import javax.microedition.lcdui El cual contiene los métodos para el control de la pantalla del dispositivo y los elementos que permiten al usuario interactuar con la aplicación. Nunca se debe crear un objeto Display, obtendremos una referencia al objeto Display que nos proporciona el propio entorno. Desarrollo de juegos con J2ME, Manuel Jesús Prieto Marín, Primera Edición, Alfaomega, México abril 2005 6

Objeto Display (2) El manejo de la pantalla se hace dentro del constructor del MIDlet y se usa para crear la interfaz de usuario en el método startapp(). Para lo anterior se requiere de una instancia del Display por cada MIDlet que se esté ejecutando en el dispositivo en cada momento Display.getDisplay(this).setCurrent(pantalla); Desarrollo de juegos con J2ME, Manuel Jesús Prieto Marín, Primera Edición, Alfaomega, México abril 2005 7

Clase Screen Mientras que del objeto Display sólo hay una instancia, del objeto Screen pueden existir varias. El objeto Screen es un componente de la GUI (Graphical User Interface) genérico que sirve como base para otros componentes. Estos objetos representan una pantalla entera de información. Sólo se puede mostrar una pantalla a la vez. La mayoría de los MIDlets usan subclases de la clase Screen, como Form, TextBox o List. Desarrollo de juegos con J2ME, Manuel Jesús Prieto Marín, Primera Edición, Alfaomega, México abril 2005 8

Clase Canvas Una clase similar a Screen es la clase Canvas, que pertenece al mismo paquete. Los objetos Canvas son usados para realizar operaciones gráficas directamete sobre la pantalla, como puede ser pintar líneas o imágenes. No se puede mostrar un objeto Canvas y un objeto Screen a la vez, pero se pueden alternar en la misma aplicación. Desarrollo de juegos con J2ME, Manuel Jesús Prieto Marín, Primera Edición, Alfaomega, México abril 2005 9

Java a tope J2ME, Universidad de Malaga 10

Form (1) Continuando con nuestro programa que imprime un mensaje en pantalla, utilizaremos un objeto que contendrá nuestra pantalla (que en nuestro caso se llama pantalla ), por lo cual declaramos el objeto de tipo Form el cual contendrá el mensaje que deseamos imprimir: private Form pantalla; 11

Form (2) Ahora dentro del constructor de nuestra clase principal inicializamos el objeto pantalla que previamente habiamos declarado y le agregamos un texto que se convertirá en el título de nuestra ventana: pantalla = new Form("Titulo - Hola Mundo"); 12

Form (3) Por medio del método append le agregamos un mensaje a nuestra pantalla utilizando el objeto de tipo Form que se llama pantalla y que previamente declaramos e inicializamos: pantalla.append(new StringItem(null, "Hola Mundo desde un celular")); 13

startapp() Dentro de nuestro método starapp asignamos a nuestro objeto Display el objeto que nos definirá nuesrta primera pantalla de arranque: Display.getDisplay(this).setCurrent(pantalla); 14

El código completo queda de la siguiente manera: import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class hola extends MIDlet { private Form pantalla; public hola() { pantalla = new Form("Titulo - Hola Mundo"); pantalla.append(new StringItem(null, "Hola Mundo desde un celular")); } public void startapp() { Display.getDisplay(this).setCurrent(pantalla); } public void pauseapp() { } public void destroyapp(boolean unconditional) { } } 15

El programa corriendo en el simulador que trae el Java Wireless Toolkit. 16

Manejo de Eventos 17

CommandListener El programa anterior no tiene interacción con el usuario, es decir, no detecta ninguna señal de entrada por parte del usuario hacia el dispositivo, ya que sólo imprime un mensaje. Ni siquiera tiene un botón de salir, por lo que lo implementaremos en el siguiente programa. Primero, dentro de nuestra clase principal implementaremos el CommandListener que nos permitirá escuchar los eventos que se generen. public class hola extends MIDlet implements CommandListener 18

commandaction Ahora requerimos implementar el método commandaction que se encargará de recibir los eventos que se generen y procesar las acciones necesarias. public void commandaction(command c, Displayable s) 19

notifydestroy() Dentro del commandaction se invoca a notifydestroy que se encargará de enviar un mensaje al sistema de que se ha terminado el programa y que proceda con el borrado de los objetos utilizados (recordar que no existe el Garbagge Collector como en el J2SE): notifydestroyed(); 20

Botones Agregamos a nuestra pantalla un botón Salir que se encargará de generar la acción de salir de la aplicación: pantalla.addcommand(new Command("Salir", Command.EXIT, 0)); 21

Asignar el manejador del evento Por último, falta asignar quién será el encargado de monitorear los eventos que se generen y para ello seleccionamos la pantalla que utilizamos y le asignamos con setcommandlistener el manejo del evento: pantalla.setcommandlistener(this); 22

El código completo queda de la siguiente manera: import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class hola extends MIDlet implements CommandListener { private Form pantalla; public hola() { pantalla = new Form("Titulo - Hola Mundo"); pantalla.append(new StringItem(null, "Hola Mundo desde un celular")); pantalla.addcommand(new Command("Salir", Command.EXIT, 0)); pantalla.setcommandlistener(this); } public void startapp() { Display.getDisplay(this).setCurrent(pantalla); } public void pauseapp() { } public void destroyapp(boolean unconditional) { } public void commandaction(command c, Displayable s) { notifydestroyed(); } } 23

El programa corriendo en el simulador que trae el Java Wireless Toolkit. 24

Entrada de Datos 25

TextField Por medio de TextField podemos capturar información que introduce el usuario por medio del teclado. 26

Ejemplo Por medio del siguiente ejemplo podemos observar el funcionamiento de TextField. Se utilizarán 2 pantallas, en la primera se preguntará el nombre de una persona, y por medio del botón continuar pasará a la segunda pantalla en donde se imprimirá un mensaje y el nombre que se capturó en la primer pantalla. También en esta segunda pantalla agregaremos un botón de salir para terminar con el programa. 27

Declaración de objetos Primero declaramos los objetos que vamos a utilizar: Un objeto de tipo Display (pantalla). 2 pantallas (Form) para desplegar información. Un campo TextField para entrada de datos. 2 botones. private Display pantalla; private Form pantalla_preguntar, pantalla_imprimir; TextField nombre; private Command continuar, salir; 28

Objeto Display En el constructor inicializamos el objeto Display: pantalla = Display.getDisplay(this); 29

Primer pantalla En el constructor inicializamos la primer pantalla, preguntamos el nombre, inicializamos el botón continuar y ambos objetos los agregamos a nuestra pantalla, y por último asignamos el manejo de eventos: pantalla_preguntar = new Form("Pantalla 1 > Preguntar Nombre"); nombre = new TextField("Escribe tu nombre:","",20,textfield.any); pantalla_preguntar.append(nombre); continuar = new Command ("Continuar",Command.OK,1); pantalla_preguntar.addcommand(continuar); pantalla_preguntar.setcommandlistener(this); 30

Segunda pantalla Iguamente en el constructor inicializamos la segunda pantalla, inicializamos el botón salir y lo agregamos a nuestra pantalla, y por último asignamos el manejo de eventos: pantalla_imprimir = new Form("Pantalla 2 > Imprimir mensaje"); salir = new Command("Salir",Command.EXIT,1); pantalla_imprimir.addcommand(salir); pantalla_imprimir.setcommandlistener(this); 31

Manejo de Eventos En el commandaction verificamos cual botón se oprimió (continuar ó salir). En caso de oprimir continuar generamos un texto que agregamos a nuestra segunda pantalla y nos cambiamos a esta pantalla. En caso de oprimir salir mandamos una notificación de terminación del programa. public void commandaction(command c, Displayable s) { if (c == continuar) { pantalla_imprimir.append(new StringItem(null, "hola "+nombre.getstring()+"!!!")); pantalla.setcurrent(pantalla_imprimir); } if (c == salir) { destroyapp(false); notifydestroyed(); } 32

import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class nombre extends MIDlet implements CommandListener { private Display pantalla; private Form pantalla_preguntar, pantalla_imprimir; TextField nombre; private Command continuar, salir; public nombre() { pantalla = Display.getDisplay(this); pantalla_preguntar = new Form("Pantalla 1 > Preguntar Nombre"); nombre = new TextField("Escribe tu nombre:","",20,textfield.any); pantalla_preguntar.append(nombre); continuar = new Command ("Continuar",Command.OK,1); pantalla_preguntar.addcommand(continuar); pantalla_preguntar.setcommandlistener(this); } pantalla_imprimir = new Form("Pantalla 2 > Imprimir mensaje"); salir = new Command("Salir",Command.EXIT,1); pantalla_imprimir.addcommand(salir); pantalla_imprimir.setcommandlistener(this); 33

public void startapp() { pantalla.setcurrent(pantalla_preguntar); } public void pauseapp() { } public void destroyapp(boolean unconditional) { } public void commandaction(command c, Displayable s) { if (c == continuar) { pantalla_imprimir.append(new StringItem(null, "hola "+nombre.getstring()+"!!!")); pantalla.setcurrent(pantalla_imprimir); } if (c == salir) { destroyapp(false); notifydestroyed(); } } } 34

Estructuras de Control 35

Rogelio Ferreira Escutia Instituto Tecnológico de Morelia Departamento de Sistemas y Computación Correo: rogeplus@gmail.com rferreir@itmorelia.edu.mx Página Web: http://antares.itmorelia.edu.mx/~kaos/ http://www.xumarhu.net/ Twitter: http://twitter.com/rogeplus Facebook: http://www.facebook.com/group.php?gid=155613741139728