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 coloca los componentes en una única dirección de forma muy similar como cuando escribimos líneas de texto en un párrafo.
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 coloca y redimensiona sus componentes en cinco regiones: norte, sur, oeste, este y centro.
Haz clic en este enlace para ver el código del ejemplo
import javax.swing.*; import java.awt.*;
|
|||
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); |
|||
} | |||
} |
Permite el diseño de la interfaz mediante solapas.
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 //A la vez que se añade una solapa
se indican los componentes que irán 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); |
||
} | ||
} |
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:
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 //Se especifican las coordenadas. Empiezan
por la 0,0 c.gridx= 2; c.gridx= 1; boton = new JButton("Botón
4"); c.gridx= 2; |
||
} | ||
} |
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.HORIZONTAL |
![]() |
GridBagConstraints.VERTICAL |
![]() |
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)