[código] GUIs en Java – Administración de Contenido (FlowLayout, BorderLayout y GridLayout)
(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 se centra en el manejo de eventos de los administradores de contenido: FlowLayout, BorderLayout y GridLayout.
Demostración de las alineaciones de FlowLayout

// Demostración de las alineaciones de FlowLayout.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DemoFlowLayout extends JFrame
{
private JButton botonIzquierda, botonCentro, botonDerecho;
private Container contenedor;
private FlowLayout esquema;
// configurar GUI y registrar componentes de escucha de los botones
public DemoFlowLayout()
{
super( "Demostración de FlowLayout" );
esquema = new FlowLayout();
contenedor = getContentPane();
contenedor.setLayout( esquema );
// establecer objeto botonIzquierda y registrar componente de escucha
botonIzquierda = new JButton( "Izquierda" );
contenedor.add( botonIzquierda );
botonIzquierda.addActionListener(
new ActionListener() { // clase interna anónima
// procesar evento de botonIzquierda
public void actionPerformed( ActionEvent evento )
{
esquema.setAlignment( FlowLayout.LEFT );
// realinear componentes adjuntos
esquema.layoutContainer( contenedor );
}
} // fin de la clase interna anónima
); // fin de la llamada a addActionListener
// establecer objeto botonCentro y registrar componente de escucha
botonCentro = new JButton( "Centro" );
contenedor.add( botonCentro );
botonCentro.addActionListener(
new ActionListener() { // clase interna anónima
// procesar evento de botonCentro
public void actionPerformed( ActionEvent evento )
{
esquema.setAlignment( FlowLayout.CENTER );
// realinear componentes adjuntos
esquema.layoutContainer( contenedor );
}
}
);
// establecer objeto botonDerecho y registrar componente de escucha
botonDerecho = new JButton( "Derecha" );
contenedor.add( botonDerecho );
botonDerecho.addActionListener(
new ActionListener() { // clase interna anónima
// procesar evento de botonDerecho
public void actionPerformed( ActionEvent evento )
{
esquema.setAlignment( FlowLayout.TRAILING);
// realinear componentes adjuntos
esquema.layoutContainer( contenedor );
}
}
);
setSize( 300, 75 );
setVisible( true );
} // fin del constructor DemoFlowLayout
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
DemoFlowLayout aplicacion = new DemoFlowLayout();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase DemoFlowLayout
Demostración de BorderLayout

// Demostración de BorderLayout.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DemoBorderLayout extends JFrame implements ActionListener
{
private JButton botones[];
private final String nombres[] = { "Ocultar norte", "Ocultar sur",
"Ocultar este", "Ocultar oeste", "Ocultar centro" };
private BorderLayout esquema;
// configurar GUI y el manejo de eventos
public DemoBorderLayout()
{
super( "Demostración de BorderLayout" );
esquema = new BorderLayout( 5, 5 ); // espacios libres de 5 píxeles
// obtener panel de contenido y establecer su esquema
Container contenedor = getContentPane();
contenedor.setLayout( esquema );
// instanciar objetos botón
botones = new JButton[ nombres.length ];
for ( int cuenta = 0; cuenta < nombres.length; cuenta++ ) {
botones[ cuenta ] = new JButton( nombres[ cuenta ] );
botones[ cuenta ].addActionListener( this );
botones[ cuenta ].setToolTipText("Borra del contenedor al boton "+nombres[cuenta]);
}
// colocar botones en BorderLayout; no importa el orden
contenedor.add( botones[ 0 ], BorderLayout.NORTH );
contenedor.add( botones[ 1 ], BorderLayout.SOUTH );
contenedor.add( botones[ 2 ], BorderLayout.EAST );
contenedor.add( botones[ 3 ], BorderLayout.WEST );
contenedor.add( botones[ 4 ], BorderLayout.CENTER );
setSize( 350, 200 );
setVisible( true );
} // fin del constructor de DemoBorderLayout
// manejar eventos de botón
public void actionPerformed( ActionEvent evento )
{
for ( int cuenta = 0; cuenta < botones.length; cuenta++ )
if ( evento.getSource() == botones[ cuenta ] )
botones[ cuenta ].setVisible( false );
else
botones[ cuenta ].setVisible( true );
// re-esquematizar el panel de contenido
esquema.layoutContainer( getContentPane() );
}
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
DemoBorderLayout aplicacion = new DemoBorderLayout();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase DemoBorderLayout
Demostración de GridLayout

// Demostración de GridLayout.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DemoGridLayout extends JFrame implements ActionListener
{
private JButton botones[];
private final String nombres[] =
{ "uno", "dos", "tres", "cuatro", "cinco", "seis" };
private boolean alternar = true;
private Container contenedor;
private GridLayout cuadricula1, cuadricula2;
// configurar GUI
public DemoGridLayout()
{
super( "Demostración de GridLayout" );
// establecer esquemas
cuadricula1 = new GridLayout( 2, 3, 10, 10 );
cuadricula2 = new GridLayout( 3, 2 );
// obtener panel de contenido y establecer su esquema
contenedor = getContentPane();
contenedor.setLayout( cuadricula1 );
// crear y agregar botones
botones = new JButton[ nombres.length ];
for ( int cuenta = 0; cuenta < nombres.length; cuenta++ ) {
botones[ cuenta ] = new JButton( nombres[ cuenta ] );
botones[ cuenta ].addActionListener( this );
botones[ cuenta ].setToolTipText("Cambia el esquema de GridLayout");
contenedor.add( botones[ cuenta ] );
}
setSize( 300, 150 );
setVisible( true );
} // fin del constructor de DemoGridLayout
// manejar eventos de botón, alternando entre los esquemas
public void actionPerformed( ActionEvent evento )
{
if ( alternar )
contenedor.setLayout( cuadricula2 );
else
contenedor.setLayout( cuadricula1 );
alternar = !alternar; // establecer alternar en el valor opuesto
contenedor.validate();
}
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
DemoGridLayout aplicacion = new DemoGridLayout();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase DemoGridLayout
Uso de un objeto JPanel
// Uso de un objeto JPanel para ayudar a distribuir los componentes.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DemoPanel extends JFrame
{
private JPanel panelBotones;
private JButton botones[];
// configurar GUI
public DemoPanel()
{
super( "Demostración JPanel" );
// obtener panel de contenido
Container contenedor = getContentPane();
// crear arreglo botones
botones = new JButton[ 5 ];
// configurar panel y establecer su esquema
panelBotones = new JPanel();
panelBotones.setLayout( new GridLayout( 1, botones.length ) );
// crear y agregar botones
for ( int cuenta = 0; cuenta < botones.length; cuenta++ ) {
botones[ cuenta ] = new JButton( "Botón " + ( cuenta + 1 ) );
panelBotones.add( botones[ cuenta ] );
}
contenedor.add( panelBotones, BorderLayout.SOUTH );
setSize( 425, 150 );
setVisible( true );
} // fin del constructor de DemoPanel
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
DemoPanel aplicacion = new DemoPanel();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
} // fin de la clase DemoPanel
Los ejercicios utilizados en este post están basados en ejemplos del libro Cómo programar en Java de Deitel, y por lo tanto están bajo la licencia que esta editorial disponga.
8 Comentarios | deja el tuyo



wola…
esta fantastico esto de java jaja muchas gracias me sirvio de muchisima ayuda…
mi primer visita a este sitio y creo q esta muy ekipado jeje
adios…
este codigo me fue muy util gracis…….
Gracias justo estaba buscando un ejemplo para estas tres apis, espero que sigas poniendo ejemplos, es que estoy aprendiendo java, estare pendiente, animo y gracias nuevamente.
hola este esta chido el codigo si me sirvio pero ahokomo le aho para ke el center me lo aplike dentro de un text area es ke no se komo aplicarlo en el triangulo de pascal
Justamente lo q buscaba….Gracias y sigue cooperando con el crecimiento del ingeniero..Nos vemos pues
muchas gracias me sirvio
gracias me sirvio muxo, aparte no hay ninguna chikilla linda por ahi q me mande su foto para mirarla??