Programación II
Guía de Laboratorio 5: Componentes GUI avanzados de Swing
Desarrollo del 8 al 12 de junio de 2009
Auxiliar de Cátedra: Hugo Alejandro Barrientos
Esta guía está dedicada para manejar algunos de los componentes avanzados que provee Swing para aplicaciones Desktop. Esta guía consiste en elaborar un selector de color construyéndolo a partir del Modelo de Color RGB y con componentes Swing como JPanels, JSliders y JSpinners, entre otros. Además cambiaremos la apariencia de nuestras aplicaciones Swing de Java.
Modelo de Color RGB
El modelo de color RGB, del inglés Red, Green, Blue, hace referencia a la composición de colores en términos de la intensidad de los colores primarios con que se forma: el rojo, el verde y el azul. Es un modelo de color basado en la síntesis aditiva, con el que es posible representar un color mediante la mezcla por adición de los tres colores luz primarios. Indicar que el modelo de color RGB no define por sí mismo lo que significa exactamente rojo, verde o azul, razón por la cual los mismos valores RGB pueden mostrar colores notablemente diferentes en diferentes dispositivos que usen este modelo de color. Aunque utilicen un mismo modelo de color, sus espacios de color pueden variar considerablemente.
JSlider
Los objetos JSlider permiten al usuario seleccionar de entre un rango de valores enteros, La clase JSlider hereda de JComponent. Está compuesto por el indicador, con el que seleccionamos el valor deseado y las marcas, que nos muestran cuáles son los valores a escoger.
JSpinner
Los objetos JSpinner permiten al usuario seleccionar un número y recorrer la lista de los mismos.
Apariencia Visual Adaptable
Los componentes Swing por el hecho que son controles ligeros, es decir que no dependen de la plataforma para asumir una apariencia visual, se pueden adaptar a otras “pieles” o Look and Feels. Sehace con la clase UIManager. Para esta guía utilizaremos el Look and Feel Substance
Luego de esta introducción teórica, para empezar esta guía, construyamos una GUI con el Netbeans Designer que luzca así:
Consiste en:
- 3 JSlider
- 3 JSpinner
- 1 JPanel
- 3 JLabel
- 1 JButton (otra parte de la práctica)
Moviendo los JSliders o modificando la cantidad de los JSpinners debemos modificar el color que se muestra en el panel de la derecha. Para ello, crearemos un método en el cual le cambiaremos el color del panel con su método setBackground() crearemos un nuevo color con modelo RGB con la ayuda de los valores de cada JSlider o JSpinner:
public void cambiarColor() { colorJPanel.setBackground( new java.awt.Color( JSliderRojo.getValue(), JSliderVerde.getValue(), JSliderAzul.getValue() ) ); } Cada JSlider y JSpinner debe modificar al control contrario pero que manejan el mismo color. En los eventos StateChange() de cada uno debe ir código similar a este:
//Codigo para JSlider y JSpinner del color ROJO//codigo evento JSlider: modifica el valor de JSpinner y manda a modificar el color del JPanelprivate void redJSliderStateChanged(javax.swing.event.ChangeEvent evt) { this.spnRojo.setValue(this.JSliderRojo.getValue()); changeColor(); } //codigo evento JSpinner: modifica el valor de JSlider y manda a modificar el color del JPanel private void spnRojoStateChanged(javax.swing.event.ChangeEvent evt) { this.JSliderRojo.setValue((Integer)spnRojo.getValue()); changeColor(); } La aplicación debe lucir así:
Ahora le asignaremos el look and feel substance a nuestra aplicación. Descargamos el Jar que contiene el look and feel y lo colocamos en la carpeta lib del proyecto (si no existe, creamos una) y luego agregamos el Jar de la librería al proyecto. Creamos un botón que nos sirva para colocarle una nueva apariencia a la aplicación. En el códico del actionPerformed escribimos la siguiente línea:
UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceCremeCoffeeLookAndFeel");
O esta otra:
SubstanceLookAndFeel.setSkin(new org.jvnet.substance.skin.BusinessSkin());
La aplicación debe lucir así:
Look and Feel Substance Creme Coffee Así tiene otra apariencia en lugar del ya tradicional metálico.