[código] GUIs en Java - cambiar la apariencia visual de una aplicación, JDesktopPane y JTabbedPane
(anterior) En esta sección se presentan varios de los componentes de Java para la creación de interfaces gráficas de usuario. Los componentes de Swing pueden personalizarse para asemejarse a la apariencia de la plataforma computacional en la que se ejecute el programa, o pueden usar la apariencia visual de Java para brindar una interfaz idéntica en cualquier Sistema Operativo. Esta sección veremos como cambiar la apariencia visual (UIManager) de una aplicación, además el cómo crear ventanas internas (JDesktopPane) y pestañas (JTabbedPane).
Cambio de la apariencia visual (UIManager)

// Cambio de la apariencia visual.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DemoAparienciaVisual extends JFrame {
private final String cadenas[] = { "Metal", "Motif", "Windows" };
private UIManager.LookAndFeelInfo apariencias[];
private JRadioButton opcion[];
private ButtonGroup grupo;
private JButton boton;
private JLabel etiqueta;
private JComboBox cuadroCombinado;
String s1="";
// configurar la GUI
public DemoAparienciaVisual()
{
super( "Demo de apariencia visual" );
Container contenedor = getContentPane();
// establecer panel para región NORTH de esquema BorderLayout
JPanel panelNorte = new JPanel();
panelNorte.setLayout( new GridLayout( 3, 1, 0, 5 ) );
// establecer etiqueta para panel NORTH
etiqueta = new JLabel( "Ésta es la apariencia visual Metal seleccionada",
SwingConstants.CENTER );
panelNorte.add( etiqueta );
// establecer botón para panel NORTH
boton = new JButton( "JButton" );
panelNorte.add( boton );
// establecer cuadro combinado para panel NORTH
cuadroCombinado = new JComboBox( cadenas );
panelNorte.add( cuadroCombinado );
// crear arreglo para botones de opción
opcion = new JRadioButton[ cadenas.length ];
// establecer panel para región SOUTH de esquema BorderLayout
JPanel panelSur = new JPanel();
panelSur.setLayout( new GridLayout( 1, opcion.length ) );
// establecer botones de opción para panel SOUTH
grupo = new ButtonGroup();
ManejadorEventos manejador = new ManejadorEventos();
for ( int cuenta = 0; cuenta < opcion.length; cuenta++ ) {
opcion[ cuenta ] = new JRadioButton( cadenas[ cuenta ] );
opcion[ cuenta ].addItemListener( manejador );
grupo.add( opcion[ cuenta ] );
panelSur.add( opcion[ cuenta ] );
}
// adjuntar paneles NORTH y SOUTH al panel de contenido
contenedor.add( panelNorte, BorderLayout.NORTH );
contenedor.add( panelSur, BorderLayout.SOUTH );
// obtener información de la apariencia visual instalada
apariencias = UIManager.getInstalledLookAndFeels();
setSize( 300, 200 );
setVisible( true );
opcion[ 0 ].setSelected( true );
} // fin del constructor de DemoAparienciaVisual
// usar UIManager para cambiar la apariencia visual de la GUI
private void cambiarLaAparienciaVisual( int valor )
{
// cambiar la apariencia visual
try {
UIManager.setLookAndFeel( apariencias[ valor ].getClassName() );
SwingUtilities.updateComponentTreeUI( this );
s1= apariencias[ valor ].getClassName();
}
// procesar problemas al cambiar la apariencia visual
catch ( Exception excepcion ) {
excepcion.printStackTrace();
}
}
public static void main( String args[] )
{
DemoAparienciaVisual aplicacion = new DemoAparienciaVisual();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
// clase interna privada para manejar eventos de botones de opción
private class ManejadorEventos implements ItemListener {
// procesar selección de apariencia visual del usuario
public void itemStateChanged( ItemEvent evento )
{
for ( int cuenta = 0; cuenta < opcion.length; cuenta++ )
if ( opcion[ cuenta ].isSelected() ) {
etiqueta.setText( "Ésta es la apariencia visual " +
s1 + " seleccionada"+cuenta );
cuadroCombinado.setSelectedIndex( cuenta );
cambiarLaAparienciaVisual( cuenta );
}
}
} // fin de la clase interna privada ManejadorEventos
} // fin de la clase DemoAparienciaVisual
Demostración de JDesktopPane

// Demostración de JDesktopPane.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PruebaEscritorio extends JFrame {
private JDesktopPane elEscritorio;
// configurar GUI
public PruebaEscritorio()
{
super( "Uso de un objeto JDesktopPane" );
// crear barra de menús, menu y elemento de menú
JMenuBar barra = new JMenuBar();
JMenu menuAgregar = new JMenu( "Agregar" );
JMenuItem nuevoMarco = new JMenuItem( "Marco interno" );
menuAgregar.add( nuevoMarco );
barra.add( menuAgregar );
setJMenuBar( barra );
// establecer escritorio
elEscritorio = new JDesktopPane();
getContentPane().add( elEscritorio );
// establecer componente de escucha para elemento de menú nuevoMarco
nuevoMarco.addActionListener(
new ActionListener() { // clase interna anónima
// mostrar nueva ventana interna
public void actionPerformed( ActionEvent evento ) {
// crear marco interno
JInternalFrame marco = new JInternalFrame(
"Marco interno", true, true, true, true );
// adjuntar panel al panel de contenido del marco interno
Container contenedor = marco.getContentPane();
MiJPanel panel = new MiJPanel();
contenedor.add( panel, BorderLayout.CENTER );
// establecer tamaño de marco interno en el tamaño de su contenido
marco.pack();
// adjuntar marco interno al escritorio y mostrarlo
elEscritorio.add( marco );
marco.setVisible( true );
}
} // fin de la clase interna anónima
); // fin de la llamada a addActionListener
setSize( 600, 460 );
setVisible( true );
} // fin del constructor
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
PruebaEscritorio aplicacion = new PruebaEscritorio();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase PruebaEscritorio
// clase para mostrar un objeto ImageIcon en un panel
class MiJPanel extends JPanel {
private ImageIcon iconoImagen;
private String[] imagenes = { "floresamarillas.jpg", "florespurpura.jpg",
"floresrojas.jpg", "floresrojas2.jpg", "floreslavanda.jpg" };
// cargar imagen
public MiJPanel()
{
int numeroAleatorio = ( int ) ( Math.random() * 5 );
iconoImagen = new ImageIcon( imagenes[ numeroAleatorio ] );
}
// mostrar iconoImagen en el panel
public void paintComponent( Graphics g )
{
// llamar al método paintComponent de la superclase
super.paintComponent( g );
// mostrar icono
iconoImagen.paintIcon( this, g, 0, 0 );
}
// devolver dimensiones de la imagen
public Dimension getPreferredSize()
{
return new Dimension( iconoImagen.getIconWidth(),iconoImagen.getIconHeight() );
}
} // fin de la clase MiJPanel
Demostración de JTabbedPane

// Demostración de JTabbedPane.
import java.awt.*;
import javax.swing.*;
public class DemoJTabbedPane extends JFrame {
// configurar GUI
public DemoJTabbedPane()
{
super( "Demo de JTabbedPane " );
// crear objeto JTabbedPane
JTabbedPane panelConFichas = new JTabbedPane();
// establecer pane11 y agregarlo al objeto JTabbedPane
JLabel etiqueta1 = new JLabel( "panel uno", SwingConstants.CENTER );
JPanel panel1 = new JPanel();
panel1.add( etiqueta1 );
panelConFichas.addTab( "Ficha uno", null, panel1, "Primer panel" );
// establecer panel2 y agregarlo al objeto JTabbedPane
JLabel etiqueta2 = new JLabel( "panel dos", SwingConstants.CENTER );
JPanel panel2 = new JPanel();
panel2.setBackground( Color.YELLOW );
panel2.add( etiqueta2 );
panelConFichas.addTab( "Ficha dos", null, panel2, "Segundo panel" );
// establecer panel3 y agregarlo al objeto JTabbedPane
JLabel etiqueta3 = new JLabel( "panel tres" );
JPanel panel3 = new JPanel();
panel3.setLayout( new BorderLayout() );
panel3.add( new JButton( "Norte" ), BorderLayout.NORTH );
panel3.add( new JButton( "Oeste" ), BorderLayout.WEST );
panel3.add( new JButton( "Este" ), BorderLayout.EAST );
panel3.add( new JButton( "Sur" ), BorderLayout.SOUTH );
panel3.add( etiqueta3, BorderLayout.CENTER );
panelConFichas.addTab( "Ficha tres", null, panel3, "Tercer panel" );
// agregar objeto JTabbedPane al contenedor
getContentPane().add( panelConFichas );
setSize( 250, 200 );
setVisible( true );
} // fin del constructor
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
DemoJTabbedPane demoPanelConFichas = new DemoJTabbedPane();
demoPanelConFichas.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase DemoJTabbedPane








Juan Camaney dice:
Octubre 26th, 2008 a las 11:00 am
esto esta de poca, me a servido de mucho
con estos ejemplos he logrado comprender.
jajaja, saludos y seguiros asÃ