gentoo linux, java, software libre y otras hierbas
Dic, 13 2007 - 2:01 pm

[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


Descargar código fuente

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


Descargar código fuente

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


Descargar código fuente

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


Descargar código fuente

Etiquetas: hack, java
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

Un enlace entrante

7 Comentarios en “[código] GUIs en Java – Administración de Contenido (FlowLayout, BorderLayout y GridLayout)”

  1. Axel dice:

    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…

  2. felix dice:

    este codigo me fue muy util gracis…….

  3. Carlos dice:

    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.

  4. mimi dice:

    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

  5. Julhian Bermeo dice:

    Justamente lo q buscaba….Gracias y sigue cooperando con el crecimiento del ingeniero..Nos vemos pues

  6. maria dice:

    muchas gracias me sirvio

  7. Xoana la loca dice:

    gracias me sirvio muxo, aparte no hay ninguna chikilla linda por ahi q me mande su foto para mirarla??

¡Déjanos tu comentario!