Cambiar aspecto de ventanas en Java con Netbeans

 


Que tal, esta es mi una de varias publicaciónes es este blog y les quiero compartir algo que para mí al principio fue un dolor de cabeza pues prácticamente peleaba con el diseñador de Netbeans al ver que lo que yo diseñaba no se veía como lo corría. La gran solución fue conocer más sobre "Look and Feel" y cambiar una miserable línea de código en el programa.

Para los que no saben, "Look and Feel" en Java es lo que te permite determinar el aspecto visual y el comportamiento de un programa, más bien de Swing, cuando usamos JFrame, JPanel y otros componentes.

Pues verán, cuando ustedes crean un JFrame en Netbeans (daré por sentado que conocen como hacerlo) pueden ver el diseño del nuevo JFrame; y luego de poner las cajas de texto, etiquetas, combobox, botones y lo que necesitan, deciden correrlo, pero ven una gran diferencia como esta...

La pantalla de la izquierda muestra el diseñador de Netbeans, y la de la derecha es la ventana corriendo. Podemos ver que cambia el color de fondo, el tipo de letra, los caracteres de la caja de contraseña, y la forma del botón y del combobox.

Todo esto se arregla modificando una línea. Vamos al código del JFrame en la sección "Source" y nos vamos casi al final donde está el método "main", veremos que dice "Look and Feel setting code (optional)"


Damos clic en el cuadrito de (+) para extender el código y ubicamos el código que está dentro del bloque "try"

Podemos ver que el "Look and Feel" que Netbeans aplica por defecto se llama "Nimbus". Esto es lo que hace el aspecto se cambie a una distinto que vemos en el diseñador. Para cambiar esto podemos borrar todo el código que está dentro del "try" y lo sustituimos por esta línea

Y ya está! Cuando corramos nuestra aplicación, el JFrame se verá como en el diseñador


Como funciona? Netbeans en realidad lo que hace es acoplarse al "Look and Feel" del sistema operativo, yo estoy usando Windows 7, por eso el diseñador toma ese aspecto. Con la sentencia  javax.swing.UIManager.setLookAndFeel(aspecto) le estamos diciendo al programa que establezca el aspecto que nosotros queremos, cuando le enviamos de parámetro el método  UIManager.getSystemLookAndFeelClassName() estamos obteniendo el aspecto o "Look and Feel" del sistema operativo en que el programa esté ejecutándose. Por lo tanto, la sentencia completa javax.swing.UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); establece al programa el aspecto del sistema operativo en que se encuentra.

Obviamente no sólo podemos usar ese aspecto, pero el chiste de usar el diseñador es que cuando ejecutemos nuestras ventanas se vean tal como las diseñamos, y no estar adivinando como aparecerán al ejecutarlas.

Podemos por ejemplo hacer que, independientemente del sistema operativo en que se ejecute la aplicación, la apariencia sea como Windows, poniendo esto

javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

El JDK ya incluye la librería para que el aspecto sea como Windows; si observamos, es en una cadena de texto (String) donde ponemos la ubicación de la librería y clase que puede hacer que este aspecto se aplique a nuestras ventanas.

También en internet andan muchas librerías de "Look and Feel" que pueden descargar y probar ustedes mismos para ver que apariencia toman sus ventanas. Les dejo una página de las tantas que hay para que prueben http://www.jtattoo.net

También la documentación de Oracle (en inglés)  http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/index.html

Esto es todo, nos vemos después... y no se olviden de comentar

Comentarios

  1. Muy interesante información acerca del uso del "Look and Feel"en Java es lo que nos permite diseñar el aspecto visual y el comportamiento de un programa, más bien de Swing, cuando usamos JFrame, JPanel y otros componentes, el chiste de usar el diseñador es que cuando ejecutemos nuestras ventanas se vean tal como las diseñamos, y no estar adivinando como aparecerán al ejecutarlas. Podemos por ejemplo hacer que, independientemente del sistema operativo en que se ejecute la aplicación, la apariencia sea como Windows, poniendo esto

    javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Ejercicios para aprender AutoCAD 3D

Piezas 3D - interesantes

Cómo instalar una fuente de alimentación