900

Capítulo 22 Componentes de la GUI: parte 2

Todos los componentes de la GUI y el manejo de eventos de este ejemplo se han descrito anteriormente, por 

lo que ahora nos concentraremos en el mecanismo para cambiar la apariencia visual. La clase 

UIManager

(paquete

javax.swing

) contiene la clase anidada 

LookAndFeelInfo

(una clase 

publicstatic

) que mantiene la informa-

ción acerca de una apariencia visual. En la línea 22 se declara un arreglo de tipo 

UIManager.LookAndFeelInfo

(observe la sintaxis utilizada para identifi car a la clase interna 

LookAndFeelInfo

). En la línea 68 se usa el método 

static

getInstalledLookAndFeels

de

UIManager

 para obtener el arreglo de objetos 

UIManager.LookAnd-

FeelInfo

 que describe cada una de las apariencias visuales disponibles en su sistema.

Tip de rendimiento 22.2

Cada apariencia visual se representa mediante una clase de Java. El método 

getInstalledLookAndFeels

 de 

UIManager

 no carga a cada una de esas clases. En vez de ello, proporciona los nombres de las clases de apariencia 

visual disponibles, de manera que pueda seleccionarse una de ellas (se supone que una vez, al inicio del programa). 
Esto reduce la sobrecarga que se genera al cargar clases adicionales que el programa no va a utilizar.

 1 

// Fig. 22.9: MarcoAparienciaVisual.java

 2 

// Cambio de la apariencia visual.

 3 

import

 java.awt.GridLayout;

 4 

import

 java.awt.BorderLayout;

 5 

import

 java.awt.event.ItemListener;

 6 

import

 java.awt.event.ItemEvent;

 7 

import

 javax.swing.JFrame;

 8 

import

 javax.swing.UIManager;

 9 

import

 javax.swing.JRadioButton;

 10 

import

 javax.swing.ButtonGroup;

 11 

import

 javax.swing.JButton;

 12 

import

 javax.swing.JLabel;

 13 

import

 javax.swing.JComboBox;

 14 

import

 javax.swing.JPanel;

 15 

import

 javax.swing.SwingConstants;

 16 

import

 javax.swing.SwingUtilities;

 17 
 18 

public class

 MarcoAparienciaVisual 

extends

 JFrame 

 19 

{

 20  

// nombres de las apariencias visuales

 21  

private final

 String cadenas[] = { 

"Metal"

,

"Motif"

,

"Windows"

};

 22  

private

 UIManager.LookAndFeelInfo apariencias[]; 

// apariencias visuales

 23  

 

private

 JRadioButton opcion[]; 

// botones de opción para seleccionar la apariencia 

visual

 24  

private

 ButtonGroup grupo; 

// grupo para los botones de opción

 25  

private

 JButton boton; 

// muestra la apariencia del botón

 26  

private

 JLabel etiqueta; 

// muestra la apariencia de la etiqueta

 27  

private

 JComboBox cuadroComb; 

// muestra la apariencia del cuadro combinado

 28 
 29  

// establece la GUI

 30  

public

 MarcoAparienciaVisual()

 31  

{

 32  

 

super

(

"Demo de apariencia visual"

 );

 33 
 34  

 

JPanel panelNorte = 

new

 JPanel(); 

// crea panel norte

 35  

 

panelNorte.setLayout(

new

 GridLayout( 

3

,

1

,

0

,

 5

 ) );

 36 
 37  

 

etiqueta = 

new

 JLabel( 

"Esta es una apariencia visual metalica"

,

 

38    

SwingConstants.CENTER

 ); 

// crea etiqueta

 39  

 

panelNorte.add( etiqueta );

 // agrega etiqueta al panel

 40

Figura 22.9

  |  Apariencia visual de una GUI basada en Swing. (Parte 1 de 3).

22_MAQ_CAP_22_DEITEL.indd900

4/19/081:17:11AM