JAVA: Practicando con BoxLayout

20 01 2009

BoxLayout, es un Layout recontra parecido al FlowLayout, cual es la diferencia? es simple, FlowLayout ubica todos los componentes solo de forma horizontal, mientras que BoxLayout los ubica, tanto horizontal como vertical.

Para crear una clase BoxLayout, necesitamos 2 argumentos: el objeto contenedor, y la clase que indica la forma de como ordenara los componetes,.

BoxLayout.X_AXIS —– Forma Horizontal
BoxLayout.Y_AXIS —– Forma Vertical

JFrame frame = new JFrame();
frame.setLayout(new BoxLayout(frame,BoxLayout.X_AXIS));

Luego para agregar los componentes es simple, lo mismo como  hicimos con FlowLayout.

JButton boton =  new JButton("Aceptar");
frame.add(boton);

Aqui  tengo un ejemplo, sobre una clasica ventana de logueo, cabe destacar q para este ejemplo demostrativo, solo me limite a usar BoxLayout.

La idea general, es crear un JFrame geeneral, el cual tendra 3 paneles  y una etiqueta, Estos  estaran  ordenados con BoxLayout en forma vertical.

Cada panel tendran cajas de textos y etiquetas. Estos  estaran ordenados con BoxLayout en forma horizontal.

import javax.swing.BoxLayout;
import javax.swing.JTextField;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPasswordField;
import javax.swing.WindowConstants;

public class DemoBoxLayout{
    private JPanel panelSuperior, panelMedio, panelInferior;
    private JLabel etiqueta1, etiqueta2, etiqueta3;
    private JTextField cajaTexto;
    private JPasswordField cajaPass;
    private JButton botonAceptar, botonCancelar;
    private JFrame frame;

    public void construyePanelSuperior(){
        panelSuperior =new JPanel();
        etiqueta2= new JLabel("Usuario");
        cajaTexto = new JTextField(10);
        panelSuperior.setLayout(new BoxLayout(panelSuperior, BoxLayout.X_AXIS));
        panelSuperior.add(etiqueta2);
        panelSuperior.add(cajaTexto);
    }

    public void construyePanelMedio(){
        panelMedio=new JPanel();
        etiqueta3= new JLabel("Password");
        cajaPass = new JPasswordField(10);
        panelMedio.setLayout(new BoxLayout(panelMedio, BoxLayout.X_AXIS));
        panelMedio.add(etiqueta3);
        panelMedio.add(cajaPass);
    }

    public void construyePanelInferior(){
        panelInferior=new JPanel();
        botonAceptar=new JButton("Aceptar");
        botonCancelar=new JButton("Cancelar");
        panelInferior.setLayout(new BoxLayout(panelInferior, BoxLayout.X_AXIS));
        panelInferior.add(botonAceptar);
        panelInferior.add(botonCancelar);
    }

    public void construyeVentana(){
        frame = new JFrame();
        etiqueta1 = new JLabel("Demo por inforux");
        frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS) );
        frame.add(etiqueta1);
        frame.add(panelSuperior);
        frame.add(panelMedio);
        frame.add(panelInferior);
        frame.pack();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public DemoBoxLayout(){
        construyePanelSuperior();
        construyePanelMedio();
        construyePanelInferior();
        construyeVentana();
    }

    public static void main (String [] inforux){
        new DemoBoxLayout();
    }
}

Compilamos y ejecutamos

$javac DemoBoxLayout.java
$java DemoBoxLayout

El resultado final sera:

pantallazo2

pantallazo12

Para esta interface de usuario, solo se limito a usar BoxLayout, ya q es un ejemplo demostrativo.

PD: La API completa de BoxLayout

Continuamos despues. Saludoss


Acciones

Information

8 responses

6 03 2009
Nicolas

Dios! Esto de los layouts está tan bien explicado! Ayer estuve luchando como loco con los layouts por el hecho de que tengo que usar varios paneles que uso en otras ventanas, y ahora que encontré esto me facilitó la vida! Gracias!!!!

7 10 2010
Danilo

A la verdad que está muy bien explicado. Gracias por ser tan explícito …

11 11 2010
Fabian

Hey, solo queria agradecerte por esta joya, estoy aprendiendo a hacer swing en Java y este ejemplo me sirvio full, los otros ejemplos en la web solo se limitan a hace una explicacion superficial, nada como el tuyo😉 sigue asi…

28 10 2011
Anónimo

Muy bien explicado. Me has ayuda a solucionar una papeleta.
Enhorabuena.

29 09 2012
yaneth

ok gracias por la auyda de este manual me ayudo mucho

13 10 2012
fabian07

oye amigo me podrias ayudar soi nuevo en esto de java y pue sme encargaron hacer un JFrame pero donde utilize el jlabel jbutton jtexfiel jtexarea y el combobox si tienes por ai un material que me puedas proporcionar para entenderle sobre esto .porfas

10 02 2014
Anónimo

gracias si me sirvio…que buena explicacion

10 04 2014
Anónimo

Mi hermano! te vas a ir directamente al cielo, jamás doy gracias,pero como comentaron por alla arriba esto es una joya!

EXCELENTE aporte.
Gracias.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: