Java Look&Feel
UNA BREVE INTRODUCCION
Para Java existen muchos y diferentes Look&Feel. Algunos son gratis y "open source", otros son propietarios, por lo que para usarlos se deberá pagar una cierta cantidad de dinero y adquirir una licencia de uso.
Comúnmente las ventanas en Java tienen un aspecto y estilos propio pero este se puede cambiar fácilmente si se tiene solamente dos cosas a la mano: una librería adecuada creada con el propósito de cambiar el Look&Feel de Java y una sola línea de código...
El Look&Feel de nuestras aplicaciones Java varía de acuerdo a la plataforma que se use si se escoge el Look&Feel propio del Sistema Operativo; de esta forma podemos desarrollar una aplicación Java sobre la plataforma Windows y mientras la estemos desarrollando la observamos con el Look&Feel propio de Windows:

...esto se logra insertando el siguiente código antes de crear cualquiera de nuestras ventanas:
import javax.swing.UIManager;
.......
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch (Exception e){e.printStackTrace();}
El método "getSystemLookAndFeelClassName()" devuelve el nombre de la clase Look&Feel que implementa el sistema nativo donde se está ejecutando la aplicación. Es por ello que el "skin" o Look&Feel de nuestra aplicación variará de acuerdo al Sistema Operativo en que esta se ejecute. Ahora bien, si esta misma aplicación la ejecutamos sobre otro Sistema Operativo entonces la aplicación tomará el formato y las características visuales de este.
PONER LOS LOOK&FEEL QUE VIENEN CON JAVA
Java nos permite modificar el Look&Feel de nuestra aplicación utilizando algunos de los Look&Feel que vienen implementados en el JDK y JRE y son proveídos por Sun MicroSystems.
Algunos de estos son:
- Metal Look&Feel (El Look&Feel por defecto de Java)
- Motif Look&Feel (El Look&Feel poe defecto de Solaris)
Metal Look&Feel
Este "skin" es el Look&Feel por defecto de Java y podemos lograr que nuestra aplicación luzca de esta forma utilizando las siguientes líneas de código en el constructor de nuestra ventana:
import javax.swing.UIManager;
......
try{
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
}catch (Exception e){e.printStackTrace();}
...o podemos utilizar estas otras líneas:
import javax.swing.UIManager;
......
try{
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
}catch (Exception e){e.printStackTrace();}
Cualquiera sea el caso siempre obtendremos el mismo resultado:
Motif Look&Feel
Este Look&Feel es el que por defecto trae Solaris y podemos simularlo para nuestra ventana de prueba que se está desarrollando sobre Windows utilizando el siguiente código:
import javax.swing.UIManager;
......
try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
}catch (Exception e){e.printStackTrace();}
El resultado que verían sería el siguiente:
PONIENDO LOOK&FEEL PROPIOS
Como había dicho al principio existen muchos Look&Feel que podríamos utilizar para darle el aspecto que queramos a nuetras aplicaciones.
En Javootoo podemos encontrar una selección de algunos Look&Feel gratis y pagos. Acontinuación haré mención de algunos de ellos y les mostraré algunas instantáneas de como luce nuestra ventana de pruebas con estos Look&Feel.
TinyLaf Look&Feel
Este Look&Feel es de los que más me gusta. La licencia es GNU LGPL y soporta aplicaciones desarrolladas a partir de el JDK 1.4+
El JAR a incluir en nuestra aplicación se puede descargar desde:
Después de haberlo descargado solo tenemos que importarlo a nuestro proyecto y en el constructor de nuestra forma(Frame) principal insertamos estas líneas de código:
import javax.swing.UIManager;
......
try{
UIManager.setLookAndFeel("de.muntjak.tinylookandfeel.TinyLookAndFeel");
}catch (Exception e){e.printStackTrace();}
A continuación podemos ver cómo nos queda nuestra ventana de pruebas:

InfoNode Look and Feel
Look&Feel basado en el Metal Look&Feel. Tiene licencia dual: GPL y Comercial.
La librería a importar en nuestro proyecto se puede descargar desde aquí:
El código a insertar en nuestro constructor de la ventana principal:
import javax.swing.UIManager;
import net.infonode.gui.laf.InfoNodeLookAndFeel;
......
try{
UIManager.setLookAndFeel(new InfoNodeLookAndFeel());
}catch (Exception e){e.printStackTrace();}
...obtendremos algo parecido a esto al ejecutar la aplicación:

Look&Feel bajo licencia GPL2 que soporta aplicaciones desarrolladas a partir del JDK 1.4 y superiores.
La librería a importar en nuestro proyecto se puede descargar desde aquí:
El código a insertar en nuestro constructor de la forma principal:
import javax.swing.UIManager;
......
try{
UIManager.setLookAndFeel(new com.lipstikLF.LipstikLookAndFeel());
}catch (Exception e){e.printStackTrace();}
Al ejecutar nuestra aplicación observaremos algo como esto:

Napkin Look&Feel
Look&Feel bajo licencia BSD que da la impresión de que nuestra aplicación Java parece estar hecha de una servilleta :)
La librería a descargar para incluir en nuestro proyecto la podemos encontrar aquí:
El código a insertar en el constructor de la forma principal es el siguiente:
import javax.swing.UIManager;
......
try{
UIManager.setLookAndFeel("net.sourceforge.napkinlaf.NapkinLookAndFeel");
}catch (Exception e){e.printStackTrace();}
Obtendremos, al ejecutar la aplicación, algo sumamente novedoso y, hasta cierto punto de vista gracioso:

NimROD Look&Feel
Look&Feel bajo licencia LGPL y que soporta aplicaciones Java a partir del JDK 1.5+
La librería a incluir en nuestro proyecto la podemos descargar desde:
El código a insertar en el constructor del formulario principal es.
import javax.swing.UIManager;
......
try{
UIManager.setLookAndFeel("com.nilo.plaf.nimrod.NimRODLookAndFeel");
}catch (Exception e){e.printStackTrace();}
...obtendremos algo como esto al compilar y ejecutar la aplicación:

EN RESUMEN
Los Look&Feel en Java pueden ser considerados herramientas muy útiles que permiten personalizar su aplicación al modo que usted prefiera. No solamente puede emplear los Look&Feel que ya están hecho sino que puede desarrollar los suyos propios. Claro, esto conllevaría un gran esfuerzo por parte del desarrollador y, además, tener conocimientos de programación Java 2d y de las primitivas gráficas de Java.
En Javootoo se pueden encontrar muchos otros Look&Feel que podrían servirle para brindar un aspecto más o menos profesional a su aplicación Java en dependencia de cual escoja.
TIP
Se debe tener cuidado a la hora de invocar el método setLookAndFeel de la clase UIManager ya que muchas personas cometen el error de invocar este método en el constructor de un JFrame después de haber realizado la llamada al método initComponents() y quedan asombrados de ver que el Look&Feel de la aplicación no ha cambiado de forma según usted especificó. El problema es que el método initComponents() crea e inicializa los objetos(botones, combos, etc.) que existen en el Frame principal con el Look&Feel que, supuestamente, se debe haber definido antes de llamarse este, y como usted ha invocado al método setLookAndFeel() después de haberse ejecutado initComponents() entonces no se cargará la aplicación con el Look&Feel definido por usted. Invoque el método setLookAndFeel() antes de realizar la llamada al método initComponents().

Meneame
del.icio.us
Hola disculpa sabras como cambiarle los colores a NimROD Look&Feel que bienen por default ya lo intente como dice la pagina pero no me reconoce la clase NimRODTheme yo trabajo en jcreator te agradeceria si me pudieras ayudar
Eduardo | 09-04-2008 - 13:30:19 GMT 1 #
En este nuevo post que escribí tienes la respuesta a tu pregunta...
Espero haber sido de ayuda...
http://kolosso.nireblog.com/post/2008/04/09/cambiar-los-colores-del-nimrod-lookfeel
Deyner | 10-04-2008 - 04:21:57 GMT 1 #
Hola Deyner, antes que nada, buen Post...
Mira yo estudio en Chilpancingo Guerrero la carrera de Ingeniería en Sistemas Computacionales, voy en 4° semestre.
Llevo una materia Llamada "Topicos Selectos de Programación", la cual es programacion evanzada en Java, y por ende, Java Grafico.
Me llamo la atencion tu aporte sobre los "Skins" del JFrame, y quise aplicar el Skin "Napkin" y no pude, de hecho no pude aplicar ningun Skin a mi aplicacion!.
Me podrias Ayudar.
¿Cómo le hago para aplicarlos?
es decir, ¿Acasó tengo que copiar ek JAR del Napkin a mi Carpeta de JDK?
Necesito tu Ayuda.
De antemano Gracias.
Ramón Castaños.
[TolDia].
The Lethal Man...
Ramon Castaños | 11-05-2008 - 08:48:30 GMT 1 #
Basta con que lo importes al proyecto que estás desarrollando y luego escribas las líneas correspondientes al Look&Feel que seleccionaste e importaste previamente al proyecto. Estas líneas deben ser escritas en el constructor del Frame principal antes de inicializar cualquier componente...
De todas formas si me puedes decir con qué IDE y JDK estás trabajando me ayudaría mucho a definir mejor mi respuesta..
Deyner | 14-05-2008 - 19:04:06 GMT 1 #
Hola Deyner me gusto la informacion de tu post, y tengo alguna duda. Estoy usando el tinylaf-1_3_8 y coloque el tema el cual llame Default.theme en mi carpeta de proyecto que genera el NetBeans IDE 5.5.1 y me carga el tema fino si lo ejecuto desde el IDE pero si ejecuto el archivo .jar que este genera no me da resultado alguno. Que es lo que tengo que hacer? Agregar otra linea de codigo? Y de ante mano, muchas gracias...
ZutoKido | 22-05-2008 - 05:59:01 GMT 1 #
Aqui te dejo como esta quedando mi codigo y se ve muy bien: primero el codigo y luego la ventana: [URL=http://img230.imageshack.us/my.php?image=imagendl2.png][IMG]http://img230.imageshack.us/img230/2096/imagendl2.th.png[/IMG][/URL]
[URL=http://img339.imageshack.us/my.php?image=imagen1bh5.png][IMG]http://img339.imageshack.us/img339/6453/imagen1bh5.th.png[/IMG][/URL]
ZutoKido | 22-05-2008 - 06:15:43 GMT 1 #
Hola de nuevo, bueno investigando un poco mas y por mi descuido, no vi el video q aparece en
esta pagina, muchas gracias pero me ha servido! La solucion fue llamar al tema Default.theme
cuando uso el tinylaf-1_3_8 y llamar NimRODThemeFile.theme cuando uso
el NimROD Look&Feel... Esta grandioso el post.. Gracias por compartir tus conocimientos!
Voy a recomendar este post a mi compañeros!..
ZutoKido | 24-05-2008 - 18:45:26 GMT 1 #
Hola!! Estoy haciendo un trabajillo en java y lo estoy haciendo en windows. Pero a lo mejor este programa se instalara en linux. He puesto:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
y me va en windows.Queria saber si esto funciona en cualquier sistema operativo, o en cambio tendria que añadirle alguna libreria?? o el echo de ponerle por defecto la apariencia del sistema no necesita nada mas. Espero haberme expresado bien. Gracias
loly | 10-07-2008 - 22:17:29 GMT 1 #
Hola sabes que gracias a tu codigo pude cargar el L&F NimRod, pero adicionalmente deseo cargarle un tema desde el codigo y no ha funcionado, se supone que los archivos de thema son de tipo MetalTheme, cargo las rutinas del archivo, pero no hace nada mas que cambiar un color lo demas no es modificado??? puedes darme una solución?
Gustavo | 15-07-2008 - 15:57:07 GMT 1 #
Saludos Deyner:
Antes que nada, desearte que en estos momentos la estes pasando chevere con los que quieres, y gozando, por su puesto, de buena salud.
En segundo lugar, permiteme felicitarte por tu excelente aportación a cerca de Look And Feel en JAVA; me resolviste un problema que tenía 3 díaz buscandole solución.
Al decir verdad, llevo apenas 1 mes programando en JAVA, concretamente con NEtBeans IDE 6.01. . .y gracias a personas como tu es que día a día podemos seguir aprediendo los principiantes.
GRACIAS TOTALES
Atte. OLAF, saludos desde México
OLAF | 07-09-2008 - 23:34:41 GMT 1 #
oye como puedo generar mis propios codigos para los skin q he descargado??
david | 15-09-2008 - 18:19:11 GMT 1 #
Hola soy de Peru gracias por los aportes de Look&Fee .
Solo me cabe una pregunta ahi alguna forma de cambiar los skin cuando el programa se esta ejecutando . Por ejemplo mediante una configuracion de diseño por parte del usuario :
Gracias
Victor Rojas | 21-10-2008 - 07:24:31 GMT 1 #
Que tal soy nuevo en la programación y de casualidad no puedews exponerme un lijero ejemplo de como utilizar hibernate en el netbeans 6.1. si talvez puedes me ayudas
ElDiego | 20-11-2008 - 22:11:41 GMT 1 #
Buenos ejemplos los de java, la verdad es que es muy util saber java a dia de hoy.
Musica | 05-12-2008 - 16:18:35 GMT 1 #
Muchas gracias por este gran post :)
oreo | 17-12-2008 - 21:53:37 GMT 1 #
Awesome Blog... Keep it Up.
ae
satellite tv on computer
cancer treatments
hypnosis
tattoo
Garza | 14-01-2009 - 12:48:31 GMT 1 #
Menudo resumen, lo has explicado como un profesional ;)
chile | 16-03-2009 - 11:23:55 GMT 1 #
Deyner tengo una duda espero que me puedas ayudar: Tengo una aplicación y quiero darle la posibilidad al usuario que escoja el skin, la operación hace el cambio sin embargo no me refresca el Frame donde estoy parado, pero si llamo otro si me muestra el cambio, tienes alguna idea de como puedo hacer el cambio.
El repaint() no funciona :( para el problemita.
Saludos y éxitos.
puntogh | 05-04-2009 - 22:52:25 GMT 1 #
hola sabes necesito de ayuda estoy realizando una interfaz en la cual debo utilizar algunas tablas mis preguntas son como le hago para realizar varios registros y no me ponga un limite para ello?, y para la base como creo la tabla de los elementos que se van a registrar en ella estoy utilizando MySQL y los atributos que necesito son (marca. No. serie y nuevo). de antemano mil gracias me ayudaria mucho tu ayuda.
Angie | 07-04-2009 - 23:02:25 GMT 1 #
Auto-Respuesta
import javax.swing.*;
////En el boton o lo que nos haga el cambio de tema
SwingUtilities.updateComponentTreeUI(Pantalla);
////Pantalla por el Frame XD
Saludos y éxitos
puntogh | 13-04-2009 - 03:07:06 GMT 1 #
hola, antes de nada gracias por la informacion.
soy estudiante de sistemas y necesito ayuda para cambiar la interfaz de un applet, sera posible que me des la zona en donde debo colocar las instrucciones para que el aplet cambie su look & feel, gracias
santos | 07-09-2009 - 14:31:07 GMT 1 #
Hola estuve visitando tu web y me parece muy excelente me gustaria contar con tu web en mi directorio, se que para mis visitas les sera de mucho interes
si deseas escribirme no lo dudes.
Un beso.
Exitos.
tatiana | 14-10-2009 - 15:54:09 GMT 1 #
hola sabes necesito de ayuda estoy realizando una interfaz en la cual debo utilizar algunas tablas mis preguntas son como le hago para realizar varios registros y no me ponga un limite para ello?, y para la base como creo la tabla de los elementos que se van a registrar en ella estoy utilizando MySQL y los atributos que necesito son (marca. No. serie y nuevo). de antemano mil gracias me ayudaria mucho tu ayuda.
buy viagra | 03-02-2010 - 23:34:39 GMT 1 #
Hola Deyner me gusto la informacion de tu post, y tengo alguna duda. Estoy usando el tinylaf-1_3_8 y coloque el tema el cual llame Default.theme en mi carpeta de proyecto que genera el NetBeans IDE 5.5.1 y me carga el tema fino si lo ejecuto desde el IDE pero si ejecuto el archivo .jar que este genera no me da resultado alguno. Que es lo que tengo que hacer? Agregar otra linea de codigo? Y de ante mano, muchas gracias...
viagra online | 05-02-2010 - 17:14:13 GMT 1 #