LAYOUTS

APARTADOS

FlowLayout
BorderLayout
JTabbedPane
GridBagLayout

Cuando se diseña una interfaz de usuario se pueden usar gestores para la distribución de componentes. Java dispone de varios administradores de distribución de componentes.

FlowLayout

FlowLayout coloca los componentes en una única dirección de forma muy similar como cuando escribimos líneas de texto en un párrafo.

Tu navegador no está preparado para ejecutar JAVA

Haz clic en este enlace para ver el código del ejemplo

import javax.swing.*;
import java.awt.*;

public class interfazFlowLayout extends JApplet
{

  public void init()
{
    setLayout(new FlowLayout());
add(new Button("Botón 1"));

add(new Button("Botón 2"));
add(new Button("Botón 3"));
add(new Button("Botón 4"));
add(new Button("Botón 5"));
//Para agregar componentes lo formalmente correcto sería de la siguiente
//manera, pero los últimos intérpretes de java permiten hacerlo sin seguir
//la siguiente sintaxis: getContentPane().add(new Button("Botón 1"))
  }  
}    

BorderLayout

BorderLayout coloca y redimensiona sus componentes en cinco regiones: norte, sur, oeste, este y centro.

Tu navegador no está preparado para ejecutar JAVA

Haz clic en este enlace para ver el código del ejemplo

import javax.swing.*;
import java.awt.*;


public class interfazBorderLayout extends JApplet
{

 
  public void init()
{
 
    setLayout(new BorderLayout());
//Se envía el componente a agregar, y la disposición del mismo
add(new Button("Norte"), BorderLayout.NORTH);

add(new Button("Sur"), BorderLayout.SOUTH);
add(new Button("Este"), BorderLayout.EAST);
add(new Button("Oeste"), BorderLayout.WEST);
add(new Button("Centro"), BorderLayout.CENTER);
 
  }    
}      

JTabbedPane

Permite el diseño de la interfaz mediante solapas.

Tu navegador no está preparado para ejecutar JAVA

Haz clic en este enlace para ver el código del ejemplo

import javax.swing.*;
import java.awt.*;

public class interfazJTabbedPane extends JApplet
{

  public void init()
{
    JTabbedPane panel = new JTabbedPane();

//Fijarse que se usará BorderLayout para colocar el contenedor
setLayout(new BorderLayout());

//A la vez que se añade una solapa se indican los componentes que irán
//en ella
panel.addTab("Solapa 1", new Button("Botón 1"));

panel.addTab("Solapa 2", new Button("Botón 2"));

panel.addTab("Solapa 3", new Button("Botón 3"));

//Se agrega el panel a la parte central de la ventana

add(panel, BorderLayout.CENTER);

  }  
}    

GridBagLayout

Mediante GriBagLayout habrá que especificar la distribución de cada uno de los componentes como si estos estuvieran colocados en celdas,. Todo el conjunto de celdas forman una rejilla. Cada componente podrá ocupar más de una celda, una celda o incluso solamente parte de una celda.

Para la colocación de componentes se tendrán que especificar restricciones (GridBagConstraints).

En el siguiente ejemplo se puede ver el uso del layout "GridBagLayout":

JButton button;
pane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;

button = new JButton("Button 1");
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 0;
pane.add(button, c);

En el panel donde se colocan los componentes se indica que se usará como administrador de componentes el layout GridBagLayout. Para poder especificar las restricciones se necesitará un objeto perteneciente a la clase "GridBagConstraints".

Veamos un ejemplo un poco más completo:

Tu navegador no está preparado para ejecutar JAVA

Haz clic en este enlace para ver el código del ejemplo

import javax.swing.*;
import java.awt.*;

public class interfazGridBagLayout extends JApplet
{

  public void init()
{
    JButton boton;
//Para definir las restricciones (constraints=restricciones)
GridBagConstraints c = new GridBagConstraints();

//Se establece administrador IU GridBagLayout
setLayout(new GridBagLayout());

//Se especifican las coordenadas. Empiezan por la 0,0
c.gridx= 0;
c.gridy= 0;
c.gridwidth = 1;
boton = new JButton("Botón 1");
add(boton, c);

c.gridx= 1;
c.gridy= 0;
boton = new JButton("Botón 2");
add(boton, c);

c.gridx= 2;
c.gridy= 0;
boton = new JButton("Botón 3");
add(boton, c);

c.gridx= 1;
c.gridy= 1;
//Especifica el ancho en celdas (no en pixels!!!)
c.gridwidth = 2;

boton = new JButton("Botón 4");
add(boton, c);

c.gridx= 2;
c.gridy= 2;
c.gridwidth = 1;
boton = new JButton("Botón 5");
add(boton, c);

  }  
}    

Si se observa el ejemplo anterior se pasa como primer argumento el componente a insertar y como segundo componente un objeto del tipo GridBagConstraints. Para crear un objeto de la clase GridBagConstraints habrá que pasar los siguientes parámetros:

GridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, Insets insets, int ipadx, int ipady)

Si se observa el anterior método existe un parámetro de tipo Insets:

Insets(int top, int left, int bottom, int right)

A continuación se van a analizar todos los parámetros uno por uno.

* gridx, gridy. Especifican número de fila y columna donde se situará el componente. La 0,0 será la esquina superior izquierda.

* gridwidth, gridheight. Número de celdas que ocupa el componente. Se puede especificar mediante un valor o usando una de las siguientes constantes: REMAINDER (abarca hasta el final de la fila si es gridwith o final columna si es gridheight) y RELATIVE (hasta el siguiente componente de fila si es gridwidth o de columna si es gridheigth)

*weightx y weighty. Especifica los pesos de las columnas y las filas respectivamente: weightx se calcula como el máximo de los weightx de los componentes que pertenezcan a dicha columna. Lo mismo ocurrirá con weighty pero aplicado a las columnas. El rango de valores deberá ser entre 0.0 y 1.0.

* anchor. Se especifica posición del componente dentro de su área de visualización:

GridBagConstraints.NORTH
GridBagConstraints.SOUTH
GridBagConstraints.WEST
GridBagConstraints.EAST
GridBagConstraints.NORTHWEST
GridBagConstraints.NORTHEAST
GridBagConstraints.SOUTHWEST
GridBagConstraints.SOUTHEAST.jpg
GridBagConstraints.CENTER

* fill. Tamaño que tendrá el componente dentro del área de visualización.Puede tomar los siguientes valores:

GridBagConstraints.NONE
GridBagConstraints.NONE
GridBagConstraints.HORIZONTAL
GridBagConstraints.HORIZONTAL
GridBagConstraints.VERTICAL
GridBagConstraints.VERTICAL
GridBagConstraints.BOTH
GridBagConstraints.BOTH

* insets(bottom, left, right, top). Especifica el espacio que habrá alredededor del componente.

* ipadx, ipady. Para incrementar la anchura preferida del componente con el doble del valor especificado en ipadx o la altura con el doble del valor especificado de ipady (es el doble pues se aplica a los dos lados del componente)

Volver al sumario