post icon

Cambiar la apariencia de las aplicaciones hechas en Java – Swing

Desde que conocí el desarrollo de aplicaciones Desktop con Java – hace un par de años atrás – me pareció que tiene una interfaz gráfica de usuario pobre y fea. La apariencia a Metal da un aspecto muy rígido, incluso más feo al que tenía Windows 95 en la época (Eso que estoy hablando de Swing porque si consideramos AWT)

Por suerte esto quedó remediado desde el update 10 de la versión 6 de Java (algo tarde pero lo vale), incluye lo que se llama Feel & Look lo que nos permite cambiar de apariencia según nuestro gusto. Esto podemos hacerlo editando la configuración del JRE que tenemos instalado, pero no lo mostraré porque estoy convencido que las aplicaciones que creamos son para el usuario final y a ellos no vamos a exigirles que entren a configurar su Runtime manualmente, no?

Así que haremos algo más interesante que eso, y veremos como setear la configuración visual para la App, si somos algo ingeniosos podemos cambiar en tiempo de ejecución la misma a elección del usuario, pero ese es otro cuento que ustedes narrarán.

El código debemos escribirlo ante que todo, ante que instanciemos objetos gráficos como botones, jFrame, jPanel, etc. preferentemente en el main void de la aplicación. Para ello importamos lo siguiente:

1
import javax.swing.*;

Luego nos vemos obligados a crear un bloque con control de errores y cargar el Look

Feel & Look: Nimbus

1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args) {
	try {
		UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
	} catch (Exception e) {
		e.printStackTrace();
	}
 
	FrmPrincipal frmPrincipal = new FrmPrincipal();
 
	frmPrincipal.setVisible(true);
}

Con esta linea cargaríamos el tema que personalmente más me agrada, y de hecho el que es más preciso ya que está construidos con vectores a diferencia de los bitmap de los otros temas, para ejemplificar les muestro una captura de sus controles

Nimbus

Feel & Look: Metal

Para cambiar de apariencia al Metal, que es el que viene por defecto solo cambiamos línea 3 del código anterior por ésta:

1
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");

Feel & Look: Windows

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

Windows

Otras opciones típicas que tienen son las siguientes (aunque ya no pondré capturas, debido a que no las tengo instaladas en éste momento)

Feel & Look: GTK

1
UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");

Feel & Look: MAC OS o QUAQUA

1
2
3
UIManager.setLookAndFeel("com.apple.laf.AquaLookAndFeel");
O
UIManager.setLookAndFeel("com.sun.java.swing.plaf.mac.MacLookAndFeel");

Si lo que necesitamos es recorrer los LAF instalados en el Sistema Operativo pueden hacerlo con este código:

1
2
3
4
5
6
7
import javax.swing.UIManager.*;
...
LookAndFeelInfo[] lista = UIManager.getInstalledLookAndFeels();
for (int i = 0; i < lista.length; i++) {
	System.out.println(lista[i].getClassName());
}
...
1 septiembre 2010

Comentarios desde Facebook:

  1. avatar
    Ruben Mozilla Firefox Windows
    14 mayo 2011 at 21:10 #

    Voy a probarlo en netbeans.

    La verdad es que la interfaz estandar de Swing es bastante fea. Lo ideal es que la interfaz se adapte al sistema operativo donde corra el programa en cuestion.

    Muchas gracias. Posteare un comentario de acuerdo al resultado.

  2. avatar
    alxvilbol Google Chrome Linux
    3 octubre 2010 at 14:02 #

    muchas gracias me sacaste de un apuro jeje

  3. avatar
    Yuan PARAGUAY Mozilla Firefox Windows
    23 septiembre 2010 at 13:59 #

    Gracias 🙂

Responder