En java podemos cambiar los colores de bakcground y foreground de botones, checkbox, etiquetas y demás con los métodos setBackground() y setForeground(). Sin embargo, algo que es menos conocido, es que podemos cambiarlos por defecto, de forma que cada vez que hagamos un new de un componente java, salga con los colores que hayamos elegido. Es más, podemos elegir incluso los colores por defecto para cada tipo de componente por separado, de forma que todos los botones salgan amarillo chillón, los checkbox verde fosforito y los textfield rosa mariposa.
La clase java que nos permite hacer esto es UIManager. Esta clase tiene la información necesaria dentro para que java pueda crear los botones, checkbox y compañía. Entre otras cosas, tiene almacenados los colores de fondo por defecto para cada uno de ellos. Cambiarlos es tan sencillo como cambiar el valor de una propiedad de UIManager
UIManager.put(“Button.background”, Color.white);
Esto tan sencillo, tiene una pega. ¿Cómo demonios adivinamos el nombre de la propiedad?. La API no pone nada y UIManager no tiene ningún método para obtener los nombres de las propiedades.
Hay un truquillo. UIManager tiene un método getDefaults() que nos devuelve un UIDefaults. Este UIDefaults sí tiene un método keys() con el que obtener todos los nombres de propiedades
UIDefaults d = UIManager.getDefaults();
Enumeration claves = d.keys();
while (claves.hasMoreElements())
System.out.println(claves.nextElement());
Esto ya nos permite experimentar a gusto con la construcción por defecto de los botones.
August 9th, 2012 at 9:08 pm
Muy interesante, por que cuando ejecuto la aplicación siempre me pone los colores que tiene por defecto el windows y eso no me gusta.
A probar estas líneas, muchas gracias.