la apariencia visual. El método 

getClassName

de la clase 

UIManager.LookAndFeelInfo

 determina el nombre 

de la clase de apariencia visual que corresponde al objeto 

UIManager.LookAndFeelInfo

. Si la clase de apariencia 

visual no se ha cargado ya, se cargará como parte de la llamada a 

setLookAndFeel

. En la línea 81 se invoca el 

método

static

updateComponentTreeUI

de la clase 

SwingUtilities

(paquete

javax.swing

) para cambiar la 

apariencia visual de todos los componentes de GUI adjuntos a su argumento (la instancia 

this

de nuestra clase 

de aplicación 

DemoAparienciaVisual

) a la nueva apariencia visual.

22.7

JDesktopPane

 y 

JInternalFrame

Muchas de las aplicaciones de hoy en día utilizan una 

interfaz de múltiples documentos

 (

MDI

): una ventana 

principal (a la que se le conoce comúnmente como la 

ventana padre

) que contiene otras ventanas (a las que se 

les conoce comúnmente como 

ventanas hijas

), para administrar varios 

documentos

abiertos que se procesan en 

paralelo. Por ejemplo, muchos programas de correo electrónico le permiten tener varias ventanas abiertas al mis-
mo tiempo, para que usted pueda componer o leer varios mensajes de correo electrónico de manera simultánea. 
De manera similar, muchos procesadores de palabras permiten al usuario abrir varios documentos en ventanas 
separadas, para que el usuario pueda alternar entre los documentos sin tener que cerrar el documento actual para 
abrir otro. La aplicación de las fi guras 22.11 y 22.12 demuestra el uso de las clases 

JDesktopPane

y

JInternal-

Frame

de Swing para implementar interfaces de múltiples documentos.

En las líneas 27 a 33 se crean objetos 

JMenuBar

,

JMenu

 y 

JMenuItem

, se agrega el objeto 

JMenuItem

 al 

objeto

JMenu

, se agrega el objeto 

JMenu

 al objeto 

JMenuBar

 y se establece el objeto 

JMenuBar

 para la ventana de 

aplicación. Cuando el usuario selecciona el objeto 

JMenuItemnuevoMarco

, la aplicación crea y muestra un nuevo 

objeto

JInternalFrame

 que contiene una imagen.

 1 

// Fig. 22.11: MarcoEscritorio.java

 2 

// Demostración de JDesktopPane.

 3 

import

 java.awt.BorderLayout;

 4 

import

 java.awt.Dimension;

 5 

import

 java.awt.Graphics;

 6 

import

 java.awt.event.ActionListener;

 7 

import

 java.awt.event.ActionEvent;

 8 

import

 java.util.Random;

 9 

import

 javax.swing.JFrame;

 10 

import

 javax.swing.JDesktopPane;

 11 

import

 javax.swing.JMenuBar;

 12 

import

 javax.swing.JMenu;

 13 

import

 javax.swing.JMenuItem;

 14 

import

 javax.swing.JInternalFrame;

 15 

import

 javax.swing.JPanel;

 16 

import

 javax.swing.ImageIcon;

 17
 18 

public class

 MarcoEscritorio 

extends

 JFrame 

 19 

{

 20  

private

 JDesktopPane elEscritorio;

 21 
 22  

// establece la GUI

 23  

public

 MarcoEscritorio()

 24  

{

 25  

 

super

(

"Uso de JDesktopPane" 

);

 26 
 27  

 

JMenuBar barra = 

new

 JMenuBar();

 // crea la barra de menús

 28  

 

JMenu menuAgregar = 

new

 JMenu(

 "Agregar"

 ); 

// crea el menú Agregar

 29  

 

JMenuItem nuevoMarco = 

new

 JMenuItem( 

"Marco interno"

 );

 30 
 31  

 

menuAgregar.add( nuevoMarco ); 

// agrega nuevo elemento marco al menú Agregar

Figura 22.11

  |  Interfaz de múltiples documentos. (Parte 1 de 2).

22.7

JDesktopane

 y 

JInternalFrame

903

22_MAQ_CAP_22_DEITEL.indd903

4/19/081:17:13AM