Fecha de creación del tutorial: 2009-06-10
LWUIT: Una librería gráfica tipo AWT o Swing para J2ME
Introducción.
La velocidad con la que aumentan la capacidad de procesamiento de los dispositivos móviles crece de forma vertiginosa. No es raro tener en el bolsillo dispositivos cuyas características se asemejan a los ordenadores de sobremesa de hace unos cuantos años...
Uno de los puntos débiles que tienen las especificaciones de J2ME, es la pobreza que nos ofrece el API de contrucción de interfaces gráficos. Bien es sabido que "lo bonito vende", así que si querías hacer una aplicación rubio con ojos azules (como yo), los programadores tenían que programar sus aplicaciones en base a Canvas, APIs propietarias de cada fabricante o librerías como las que presentamos en este tutorial pero de pago..
Dicen que una imagen vale más que mil palabras, así que para empezar a hacerte una idea de lo que puedes conseguir con esta librería, te recomiendo que veas el siguiente video.
Características generales
A continuación te presento algunas de las carácterísticas y o requisitos generales que he visto más interesantes:
- Licencia de uso libre, incluso en aplicaciones comerciales. (Revisalo no vaya a ser que cambie).
- Requiere CLDC 1.1 o superior y MIDP 2.0 o superior.
- API muy fácil comprender, sobre todo si has programado en Swing o AWT.
- Si se optimiza y/o ofusca el código no es demasiado pesada en el proyecto.
- Buena documentación.
Características funcionales
- Amplia la funcionalidad de la mayoría de los controles gráficos estandar ubicados en el paquete
javax.microedition.lcdui. - Aporta más controles gráficos: ComboBox, ListBox, TabbedPane, Dialog, Calendar.
- Incorpora casi todos los Layouts: GridLayout, BoxLayout, BorderLayout, etc definidos en AWT.
Para el que no lo sepa, un Layout sirve para indicar de forma semántica la colocación de los componentes gráficos dentro de su contenedor, de manera que la aplicación es más portable entre distintos tamaños de pantalla. - Eventos y Listeners: El programador se registra en los eventos que esté interesado tratar.
- Posibilidad de incluir y cambiar Temas en tiempo de ejecución, algo similar a especificar la apariencia de los controles mediante CSS en función de su "clase".
Por ejemplo, todos los controles salen con borde rojo y letra verde. - Soporta dispositivos con pantallas sensibles al tacto.
- Posibilidad de establecer el orden de tabulación entre controles.
- Más máscaras de entrada para los campos de texto: MAILADDR, URL, etc.
- Transiciones entre pantallas. Es posible de forma fácil (con 0, 1 ó 2 líneas de código) aplicar efectos en 2D/3D entre la pantalla que se oculta y la que se muestra.
- Renderer y DataModel, para personalizar la vista y el contenido de botones, listas desplegables, casillas de verificación, etc.
por ejemplo, que cuando se pulse un botón que se muestre una imágen en su fondo o que al desplegar una lista que se muestren imágenes y texto... - Animaciones en 2D/3D.
- Soporte para internacionalización no basada en el estándar
- Editor de recursos (temas, mensajes, imágenes, fuentes, etc) que luego serán leídos fácilmente desde la aplicación.
- Un pequeño framework de gestión de trazas integrado (es decir, mini mini mini Log4J, eso sí muy útil :-))
Un ejemplo
Hacer una aplicación que explique todo se saldría del propósito de este tutorial, así que me voy ha hacer una pequeña aplicación en donde se vean algunas de las funcionalidades y sirva como tirón inicial para el lector. De todas formas, recuerda que una de las características generales que cite anteriormente es que la documentación es bastante buena.
A continuación os dejo el código fuente para que realices tus pruebas. Código fuente del proyecto (Netbeans).
Aspecto de la aplicación a construir:

Fichero de recursos utilizando la aplicación ResourceEditor que incluye la librería:
Es una aplicación Java que está ubicada en el directorio util de la distribucción oficial.

La clase principal de la aplicación (MIDlet):
La ventanita del ejemplo
Referencias
- Página principal del proyecto.
- http://www.youtube.com/watch?v=sZ6BhYoi_4U
- Video tutorial del editor de recursos.
Conclusiones
Como conclusión podríamos decir que hacian falta iniciativas como esta que hagan más atractivas las aplicaciones sin perder portabilidad ni hacer el proyecto demasiado pesado para dispositivos más antiguos...
Algunas reflexiones:
- Qué en el mundo no todos tienen teléfonos de última generación, pero la mayoría tienen Java preinstalado.
- El porcentaje de personas que tienen teléfono es muy superior al porcentaje de personas que tienen ordenador.
- No hace falta ser Julio Verne, para ver que todo evoluciona rápidamente y que seguramente en breve todos tendremos en nuestros bolsillos cacharros tan potentes como los ordenadores de hace unos años.
Otra cosa, recuerda que esto no es más que un tutorial, hay más puntos al respecto sobre los que profundizar.. eso sí, ahora te toca a tí pegarte con ello.
Carlos García Pérez. Creador de MobileTest, un complemento educativo para los profesores y sus alumnos.
cgpcosmad@gmail.com
Anímate y coméntanos lo que pienses sobre este tutorial
Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.
| Autor | Mensaje de usuario registrado |
|---|
| Autor | Mensaje de usuario anónimo |
|---|---|
| christian V. |
Fecha de envío: 2009-08-19 - 07:32:44 PM Hola jorge, sobre lo que comentas de que guardas el archivo y no lo ves es porque si se crea pero no es accesible desde el sistema operativo del celular, solo desde tu aplicación lo puedes ver, una opcion para esto seria enviarlo a algun servicio web desde tu aplicacion y de ahi bajarlo desde donde lo necesites. Para lo de la base de datos podria ser una sugerencia manejar tus datos por medio de web esrvices? bueno seria una sugerencia y depende de lo que haga tu aplicacion, saludos. |
| Jorge D'ANgelo |
Fecha de envío: 2009-08-05 - 05:39:46 PM Estimado Carlos: Soy nuevo en esto del j2me y realmente estoy muy entusiasmado con este tema. A la hora de buscar información es inevitable encontrarme con tu foto y tus excelentes explicaciones, muchas gracias por eso. Te escribo para consultarte acerca de si conoces algún Framework que me permita hacer gráficos de líneas, tortas, barras, etc., para Midp2. También para pedirte tu opinión acerca de que Framework utilizar para base de datos, estoy usando floggy, pero no entiendo muy bien algunos conceptos, como por ejemplo si quiero grabar una “tabla” tradicional, lo hago por medio de un Vector, pero en la medida que se agranda tarda muchísimo en grabarlo todo. Por otro lado, si grabo los elementos individualmente, para recuperarlos debo hacerlo por medio del id, que como no es parte de los atributos del objeto, no se como acceder. Por otro lado he intentado grabar un archivo separado por comas en el celular, utilizando FileConnection, y aunque no ceo ninguna Exception, no puedo encontrar el archivo en ningún lado, y necesito hacerlo para por ejemplo pasarlo a una pc por bluetooth. Desde ya muchas gracias por tus artículos y por tu orientación en los problemas enumerados, por más minima que sea. Jorge D'Angelo, Mendoza, Argentina |
| Carlos García |
Fecha de envío: 2009-07-31 - 08:27:53 AM (Continuación) Respecto a los temas por defecto, no te preocupes, pues en un par de horas tienes creado uno que se adapte a tus gustos... es bastante fácil. Ahora sólo queda que sigan actualizando la librería y creándose estandares que respeten todos los fabricantes para hacernos la vida más fácil a los programadores. |
| Carlos García |
Fecha de envío: 2009-07-31 - 08:25:50 AM David, la tecnología avanza y no puedes estar siempre pensando en hacer algo compatible con todo hay que imponer unos requisitos mínimos si no quieres tener que hacer varias versiones de la misma aplicación.. De todas formas un porcentaje muy alto de los telefonos ya tienen CLD 1.1. |
| David |
Fecha de envío: 2009-07-27 - 01:08:37 PM Hola: Muy buen tutorial de introduccion, se agradece leer en español, para variar :) No obstante le saco algunas pegas a LWUIT... - Todavía hay muchos teléfonos CLDC 1.0 ¿Qué pasa con ellos? - En general las aplicaciones se vuelven pesadas de transferir vía bluetooth, y de ejecutar, pierden algo de "frescura" en su respuesta a eventos. - Los temas por defecto son feos ¡pero feos de verdad! - Las personas que llevamos varios años trabajando con J2ME ya nos hemos pilotado controles en bajo nivel hace tiempo ¡a buenas horas SUN! GRRR! :( ...aún con todo, me alegra ver este tipo de iniciativas, quizás para la versión 2.0 me anime a trabajar con ello. |
- Puedes inscribirte en nuestro servicio de notificaciones haciendo clic aquí.
- Puedes firmar en nuestro libro de visitas haciendo clic aquí.
- Puedes asociarte al grupo AdictosAlTrabajo en XING haciendo clic aquí.
- Añadir a favoritos Technorati.
Esta obra está licenciada bajo licencia Creative Commons de
Reconocimiento-No comercial-Sin obras derivadas 2.5
Recuerda
Autentia te regala la mayoría del conocimiento aquí compartido (Ver todos los tutoriales). Somos expertos en: J2EE, Struts, JSF, C++, OOP, UML, UP, Patrones de diseño ... y muchas otras cosas.
¿Nos vas a tener en cuenta cuando necesites consultoría o formación en tu empresa?, ¿Vas a ser tan generoso con nosotros como lo tratamos de ser con vosotros?
Somos pocos, somos buenos, estamos motivados y nos gusta lo que hacemos ...
Autentia = Soporte a Desarrollo & Formación.
Tutoriales recomendados
| Nombre | Resumen | Visitas | Valoración | Votos | ||
|---|---|---|---|---|---|---|
| JSR-179 Location API para J2ME: Posicionamiento geográfico en nuestras aplicaciones. | En este tutorial Carlos García nos presentará la especificación JSR-179 Location API para J2ME, en donde veremos como realizar aplicaciones con funcionalidad relacionada con el posicionamiento geográfico. | 2009-07-19 | 5090 | Muy bueno | 4 | ![]() |
| LWUIT: Una librería gráfica tipo AWT o Swing para J2ME | En este tutorial Carlos García os presenta una librería para J2ME con mucha similitud con Swing o AWT. | 2009-06-10 | 5259 | - | - | ![]() |
| JTAPI. El API de Telefonía para Java | En este tutorial veremos varios ejemplos del uso de JTAPI. | 2009-04-13 | 4564 | - | - | ![]() |
| J2ME. Internacionalización de aplicaciones para móviles | En este tutorial aprenderemos a internacionalizar MIDlets mediante el estandar JSR-238 | 2008-05-06 | 4628 | - | - | ![]() |
| Wireless en Debian GNU/Linux con iwlwifi para las tarjetas Intel Wireless WiFi Link 4965AGN e Intel PRO/Wireless 3945AB, y el NetworkManager | En este tutorial vamos a ver otra posibilidad de configurar la wireless para ordenadores con tarjeta 3945 (por ejemplo el Asus G1) o 4965 (por ejemplo el Asus G1S) de Intel | 2007-10-23 | 6094 | - | - | ![]() |
| MobileTest. Acceso a través del navegador Web del móvil o la PDA. Versión: 1.0.0 | En este documento se presenta una de las aplicaciones que componen MobileTest, una pionera plataforma educativa. | 2007-09-19 | 2484 | - | - | ![]() |
| MobileTest. Acceso a través de un Navegador Web. V 1.0.0 | En este documento Carlos García nos presenta una de las aplicaciones que componen la plataforma MobileTest, una pionera plataforma que proporciona entre otras muchas cosas, un espacio privado para que cualquier profesor, centro de formación, empresa o web | 2007-09-17 | 3188 | - | - | ![]() |
| MobileTest. Acceso a la plataforma a través de una aplicación Java instalada en un dispositivo móvil. V 1.0.0 | En este documento Carlos García nos presenta una de las aplicaciones que componen la plataforma MobileTest, una pionera plataforma que proporciona entre otras muchas cosas, un espacio privado para que cualquier profesor, centro de formación, empresa o web | 2007-09-17 | 2032 | - | - | ![]() |
| J2ME, FileConnection API. Acceso a tarjetas de memorias desde MIDlets | En este tutorial se va a intentar hacer una introducción al API FileConection de J2ME que nos permite acceder a estas memorias desde aplicaciones para dispositivos móviles. | 2007-07-30 | 9340 | - | - | ![]() |
| J2ME Push Registry. Activación automática de MIDlets | En este tutorial se va a tratar una interesante característica que está disponible a partir de MIDP 2.0 para iniciar MIDlets sin la intervención del usuario. | 2007-05-21 | 10191 | Muy bueno | 1 | ![]() |
Nota:
Los tutoriales mostrados en este Web tienen como objetivo la difusión del conocimiento.
Los contenidos y comentarios de los tutoriales son responsabilidad de sus respectivos autores.
En algún caso se puede hacer referencia a marcas o nombres cuya propiedad y derechos es de sus respectivos dueños. Si algún afectado desea que incorporemos alguna reseña específica, no tiene más que solicitarlo.
Si alguien encuentra algún problema con la información publicada en este Web, rogamos que informe al administrador rcanales@adictosaltrabajo.com para su resolución.







