gentoo linux, java, software libre y otras hierbas
Dic, 13 2007 - 5:32 pm

[código] Interfaces Gráficas en Java uso de BoxLayout y GridBagLayout

(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 otros administradores de contenido más complejos: BoxLayout y GridBagLayout.

Demostración de BoxLayout


// Demostración de BoxLayout.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class DemoBoxLayout extends JFrame {

   // configurar GUI
   public DemoBoxLayout()
   {
      super( "Demo de BoxLayout" );

      // crear contenedores Box con esquema BoxLayout
      Box horizontal1 = Box.createHorizontalBox();
      Box vertical1 = Box.createVerticalBox();
      Box horizontal2 = Box.createHorizontalBox();
      Box vertical2 = Box.createVerticalBox();

      final int TAMANIO = 3; // número de botones en cada contenedor Box

      // agregar botones al objeto Box horizontal1
      for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ )
         horizontal1.add( new JButton( "Botón " + cuenta ) );

      // crear montante y agregar botones al objeto Box vertical1
      for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ ) {
         vertical1.add( Box.createVerticalStrut( 25 ) );
         vertical1.add( new JButton( "Botón " + cuenta ) );
      }

      // crear pegamento horizontal y agregar botones al objeto Box horizontal2
      for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ ) {
         horizontal2.add( Box.createHorizontalGlue() );
         horizontal2.add( new JButton( "Botón " + cuenta ) );
      }

      // crear área rígida y agregar botones al objeto Box vertical2
      for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ ) {
         vertical2.add( Box.createRigidArea( new Dimension( 12, 8 ) ) );
         vertical2.add( new JButton( "Botón " + cuenta ) );
      }

      // crear pegamento vertical y agregar botones al panel
      JPanel panel = new JPanel();
      panel.setLayout( new BoxLayout( panel, BoxLayout.Y_AXIS ) );

      for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ ) {
         panel.add( Box.createGlue() );
         panel.add( new JButton( "Botón " + cuenta ) );
      }

      // crear un objeto JTabbedPane
      JTabbedPane fichas = new JTabbedPane(
         JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT ); 

      // colocar cada contendor en panel con fichas
      fichas.addTab( "Cuadro horizontal", horizontal1 );
      fichas.addTab( "Cuadro vertical con montantes", vertical1 );
      fichas.addTab( "Cuadro horizontal con pegamento", horizontal2 );
      fichas.addTab( "Cuadro vertical con áreas rígidas", vertical2 );
      fichas.addTab( "Cuadro vertical con pegamento", panel );

      getContentPane().add( fichas );  // colocar panel con fichas en el panel de contenido

      setSize( 400, 220 );
      setVisible( true );

   } // fin del constructor

   public static void main( String args[] )
   {
      JFrame.setDefaultLookAndFeelDecorated(true);
      DemoBoxLayout aplicacion = new DemoBoxLayout();
      aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
   }

} // fin de la clase DemoBoxLayout


Descargar código fuente

Demostración de GridBagLayout

// Demostración de GridBagLayout.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class DemoGridBag extends JFrame
{
   private Container contenedor;
   private GridBagLayout esquema;
   private GridBagConstraints restricciones; 

   // configurar GUI
   public DemoGridBag()
   {
      super( "GridBagLayout" );

      contenedor = getContentPane();
      esquema = new GridBagLayout();
      contenedor.setLayout( esquema );   

      // instanciar restricciones de GridBagLayout
      restricciones = new GridBagConstraints();

      // crear componentes de GUI
      JTextArea areaTexto1 = new JTextArea( "AreaTexto1", 5, 10 );
      JTextArea areaTexto2 = new JTextArea( "AreaTexto2", 2, 2 );

      String nombres[] = { "Hierro", "Acero", "Cobre" };
      JComboBox cuadroCombinado = new JComboBox( nombres );

      JTextField campoTexto = new JTextField( "CampoTexto" );
      JButton boton1 = new JButton( "Botón 1" );
      JButton boton2 = new JButton( "Botón 2" );
      JButton boton3 = new JButton( "Botón 3" );

      // weightx y weighty para areaTexto1 son 0: el valor predeterminado
      // anchor para todos los componentes es CENTER: el valor predeterminado
      restricciones.fill = GridBagConstraints.BOTH;
      agregarComponente( areaTexto1, 0, 0, 1, 3 );    

      // weightx y weighty para boton1 son 0: el valor predeterminado
      restricciones.fill = GridBagConstraints.HORIZONTAL;
      agregarComponente(  boton1, 0, 1, 2, 1 );

      // weightx y weighty para cuadroCombinado son 0: el valor predeterminado
      // fill es HORIZONTAL
      agregarComponente( cuadroCombinado, 2, 1, 2, 1 );             

      //  boton2
      restricciones.weightx = 1000;  // puede hacerse más ancho
      restricciones.weighty = 1;     // puede hacerse más largo
      restricciones.fill = GridBagConstraints.BOTH;
      agregarComponente(  boton2, 1, 1, 1, 1 );

      // fill es BOTH para boton3
      restricciones.weightx = 0;
      restricciones.weighty = 0;
      agregarComponente(  boton3, 1, 2, 1, 1 );

      // weightx y weighty para campoTexto son 0, fill es BOTH
      agregarComponente( campoTexto, 3, 0, 2, 1 );

      // weightx y weighty para areaTexto2 son 0, fill es BOTH
      agregarComponente( areaTexto2, 3, 2, 1, 1 );

      setSize( 300, 150 );
      setVisible( true );

   } // fin del constructor de DemoGridBag

   // método para establecer restricciones
   private void agregarComponente( Component componente,
      int fila, int columna, int anchura, int altura )
   {
      // establecer gridx y gridy
      restricciones.gridx = columna;
      restricciones.gridy = fila;

      // establecer gridwidth y gridheight
      restricciones.gridwidth = anchura;
      restricciones.gridheight = altura;

      // establecer restricciones y agregar componente
      esquema.setConstraints( componente, restricciones );
      contenedor.add( componente );
   }

   public static void main( String args[] )
   {
      JFrame.setDefaultLookAndFeelDecorated(true);
      DemoGridBag aplicacion = new DemoGridBag();
      aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
   }

} // fin de la clase DemoGridBag


Descargar código fuente

Demostración de las constantes de GridBagLayout

// Demostración de las constantes de GridBagLayout.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class DemoGridBag2 extends JFrame
{
   private GridBagLayout esquema;
   private GridBagConstraints restricciones;
   private Container contenedor;

   // configurar GUI
   public DemoGridBag2()
   {
      super( "GridBagLayout" );

      contenedor = getContentPane();
      esquema = new GridBagLayout();
      contenedor.setLayout( esquema );   

      // instanciar restricciones de GridBagLayout
      restricciones = new GridBagConstraints();

      // crear componentes de GUI
      String metales[] = { "Cobre", "Aluminio", "Plata" };
      JComboBox cuadroCombinado = new JComboBox( metales );

      JTextField campoTexto = new JTextField( "CampoTexto" );

      String tiposLetra[] = { "Serif", "Monospaced" };
      JList lista = new JList( tiposLetra );

      String nombres[] = { "cero", "uno", "dos", "tres", "cuatro" };
      JButton botones[] = new JButton[ nombres.length ];

      for ( int cuenta = 0; cuenta < botones.length; cuenta++ )
         botones[ cuenta ] = new JButton( nombres[ cuenta ] );

      // definir restricciones del componente de GUI campoTexto
      restricciones.weightx = 1;
      restricciones.weighty = 1;
      restricciones.fill = GridBagConstraints.BOTH;
      restricciones.gridwidth = GridBagConstraints.REMAINDER;
      agregarComponente( campoTexto );

      // botones[0] -- weightx y weighty son 1: fill es BOTH
      restricciones.gridwidth = 1;
      agregarComponente( botones[ 0 ] );

      // botones[1] -- weightx y weighty son 1: fill es BOTH
      restricciones.gridwidth = GridBagConstraints.RELATIVE;
      agregarComponente( botones[ 1 ] );

      // botones[2] -- weightx y weighty son 1: fill es BOTH
      restricciones.gridwidth = GridBagConstraints.REMAINDER;
      agregarComponente( botones[ 2 ] );

      // cuadroCombinado -- weightx es 1: fill es BOTH
      restricciones.weighty = 0;
      restricciones.gridwidth = GridBagConstraints.REMAINDER;
      agregarComponente( cuadroCombinado );

      // botones[3] -- weightx es 1: fill es BOTH
      restricciones.weighty = 1;
      restricciones.gridwidth = GridBagConstraints.REMAINDER;
      agregarComponente( botones[ 3 ] ); 

      // botones[4] -- weightx y weighty son 1: fill es BOTH
      restricciones.gridwidth = GridBagConstraints.RELATIVE;
      agregarComponente( botones[ 4 ] );

      // lista -- weightx y weighty son 1: fill es BOTH
      restricciones.gridwidth = GridBagConstraints.REMAINDER;
      agregarComponente( lista );

      setSize( 300, 200 );
      setVisible( true );

   }  // fin del constructor

   // agregar un componente al contenedor
   private void agregarComponente( Component componente )
   {
      esquema.setConstraints( componente, restricciones );
      contenedor.add( componente );      // agregar componente
   }   

   public static void main( String args[] )
   {
      JFrame.setDefaultLookAndFeelDecorated(true);
      DemoGridBag2 aplicacion = new DemoGridBag2();
      aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
   }

}  // fin de la clase DemoGridBag2


Descargar código fuente

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

2 Comentarios | deja el tuyo

2 Comentarios en “[código] Interfaces Gráficas en Java uso de BoxLayout y GridBagLayout”

  1. martin dice:

    amigos gracias por poner este codigo fuenet estoy en pleno apojeo en java y estoy muy animado con esta materiaque estoy bien gracias de verdad deveria poner otro codigos fuente estos se hacen enter muy bien

  2. Isaac Osaka dice:

    He usado las pestañas pero tengo un problema que no he resuelto ahun

    Como pongo las pestañas en sentido vertical???

    si alguien sabe de eso pues me podria decir???

    he navegado un poco y solo he encontrado a otros preguntando lo mismo y otros mas aconsejando hacer una clase heredada de component y calcular todo manualmente

    Tambien he leido un omentario de alguien que escudriño en el codigo y dijo que era imposible, que eso es problema de el estilo que se le aplica a la ventana , ya saben el metal … algo
    no se si sea util esa info

¡Déjanos tu comentario!