[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
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
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
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.
5 Comentarios | deja el tuyo





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
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
Hola que tal crintian como te va…. mira he tratado de desarrollar un pequeño formulario de acceso a un sistema x en donde tego un campo usuario y uno contraseña esto los he posisionado con un GridBagLayout pero cunado lo corro con netbeans no me salen los cotroles, tengo que maximizar la ventana y despues restaurarla asi es que se pueden ver los, no se si es por netbeans o por algun codigo que falte. El codigo es el siguiente….
import javax.swing.*;
import java.awt.*;
public class Acceso extends JFrame {
public Acceso(){
super (“Acceso al Sistema”);
setSize(200,200);
setVisible(true);
this.getContentPane().setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
JLabel accasis = new JLabel(“Acceso al Sistema”, JLabel.CENTER);
constraints.gridx = 0;
constraints.gridy = 0;
constraints.gridwidth = 2;
constraints.gridheight = 1;
this.getContentPane().add(accasis, constraints);
JLabel espacio = new JLabel(” “);
constraints.gridx = 0;
constraints.gridy = 1;
constraints.gridwidth = 2;
constraints.gridheight = 1;
this.getContentPane().add(espacio, constraints);
JLabel usuario = new JLabel(“Usuario:”);
setForeground (Color.blue);
constraints.gridx = 0;
constraints.gridy = 2;
constraints.gridwidth = 1;
constraints.gridheight = 1;
this.getContentPane().add(usuario,constraints);
JLabel espacio1 = new JLabel(” “);
constraints.gridx = 0;
constraints.gridy = 3;
constraints.gridwidth = 2;
constraints.gridheight = 1;
this.getContentPane().add(espacio1, constraints);
JLabel contraseña =new JLabel(“Contraseña:”);
constraints.gridx = 0;
constraints.gridy = 4;
constraints.gridwidth = 1;
constraints.gridheight = 1;
this.getContentPane().add(contraseña, constraints);
JLabel espacio2 = new JLabel(” “);
constraints.gridx = 0;
constraints.gridy = 5;
constraints.gridwidth = 2;
constraints.gridheight = 1;
this.getContentPane().add(espacio2, constraints);
JButton aceptar = new JButton(“Aceptar”);
constraints.gridx = 0;
constraints.gridy = 6;
constraints.gridwidth = 1;
constraints.gridheight = 1;
this.getContentPane().add(aceptar, constraints);
JTextField usuariot = new JTextField();
constraints.gridx = 1;
constraints.gridy =2;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.anchor = GridBagConstraints.NORTHWEST;
this.getContentPane().add(usuariot, constraints);
JPasswordField contraseñat = new JPasswordField();
constraints.gridx = 1;
constraints.gridy = 4;
constraints.gridwidth = 1;
constraints.gridheight = 1;
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.anchor = GridBagConstraints.NORTHWEST;
this.getContentPane().add(contraseñat, constraints);
JButton cancelar = new JButton(“Cancelar”);
constraints.gridx = 1;
constraints.gridy = 6;
constraints.gridwidth = 1;
constraints.gridheight = 1;
this.getContentPane().add(cancelar, constraints);
}
public static void main(String[] args) {
new Acceso();
}
}
si modificas el setSize con lo siguiente
public Acceso(){
super (“Acceso al Sistema”);
setSize(345,170);
setVisible(true);
this.getContentPane().setLayout(new GridBagLayout());
estan buenos los ejemplos de las interfaces