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