Saltearse al contenido

BorderLayout y GridLayout en Swing

BorderLayout

BorderLayout es uno de los Layout Managers más utilizados en Swing, especialmente para la disposición general de las ventanas principales de las aplicaciones.

Características de BorderLayout

  1. Cinco regiones: Divide el contenedor en cinco áreas: NORTH, SOUTH, EAST, WEST y CENTER.
  2. Expansión automática: Los componentes se expanden para llenar su región asignada.
  3. Prioridad de tamaño: El componente central ocupa todo el espacio no utilizado por los otros componentes.
  4. Regiones opcionales: No es necesario utilizar todas las regiones.

Uso de BorderLayout

Para usar BorderLayout:

  1. Crear una instancia de BorderLayout (aunque es el layout por defecto para JFrame).
  2. Asignar componentes a las regiones específicas al añadirlos al contenedor.

Ejemplo de BorderLayout

1
import javax.swing.*;
2
import java.awt.*;
3
4
public class EjemploBorderLayout {
5
private JFrame frame;
6
7
public EjemploBorderLayout() {
8
inicializarComponentes();
9
}
10
11
private void inicializarComponentes() {
12
frame = new JFrame("Ejemplo BorderLayout");
13
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
14
frame.setLocationRelativeTo(null);
15
frame.setSize(400, 300);
16
17
// BorderLayout es el layout por defecto para JFrame, pero lo establecemos explícitamente
18
frame.setLayout(new BorderLayout(10, 10)); // 10 píxeles de espacio horizontal y vertical
19
20
// Añadir componentes a las diferentes regiones
21
frame.add(new JButton("Norte"), BorderLayout.NORTH);
22
frame.add(new JButton("Sur"), BorderLayout.SOUTH);
23
frame.add(new JButton("Este"), BorderLayout.EAST);
24
frame.add(new JButton("Oeste"), BorderLayout.WEST);
25
frame.add(new JTextArea("Centro"), BorderLayout.CENTER);
26
}
27
28
public void mostrar() {
29
frame.setVisible(true);
30
}
31
32
public static void main(String[] args) {
33
SwingUtilities.invokeLater(() -> {
34
EjemploBorderLayout ejemplo = new EjemploBorderLayout();
35
ejemplo.mostrar();
36
});
37
}
38
}

Explicación:

  1. Creamos un JFrame y establecemos explícitamente BorderLayout como su gestor de diseño.
  2. Añadimos botones a las regiones NORTH, SOUTH, EAST y WEST.
  3. Añadimos un JTextArea a la región CENTER, que ocupará todo el espacio restante.
  4. Los componentes se expanden automáticamente para llenar sus respectivas regiones.

Uso efectivo de BorderLayout

  • Ideal para crear la estructura básica de una aplicación (barra de herramientas arriba, panel de estado abajo, panel principal en el centro, etc.).
  • Se puede combinar con otros layouts anidando paneles en las diferentes regiones.

GridLayout

GridLayout organiza los componentes en una cuadrícula rectangular de filas y columnas, donde todas las celdas tienen el mismo tamaño.

Características de GridLayout

  1. Distribución uniforme: Todos los componentes tienen el mismo tamaño.
  2. Filas y columnas configurables: Se puede especificar el número de filas y columnas.
  3. Expansión automática: Los componentes se expanden para llenar sus celdas.
  4. Orden de adición: Los componentes se añaden de izquierda a derecha y de arriba a abajo.

Uso de GridLayout

Para usar GridLayout:

  1. Crear una instancia de GridLayout especificando el número de filas y columnas.
  2. Asignar el GridLayout al contenedor.
  3. Añadir componentes al contenedor.

Ejemplo de GridLayout

1
import javax.swing.*;
2
import java.awt.*;
3
4
public class EjemploGridLayout {
5
private JFrame frame;
6
7
public EjemploGridLayout() {
8
inicializarComponentes();
9
}
10
11
private void inicializarComponentes() {
12
frame = new JFrame("Ejemplo GridLayout");
13
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
14
frame.setLocationRelativeTo(null);
15
frame.setSize(300, 200);
16
17
// Crear un panel con GridLayout de 3 filas y 2 columnas
18
JPanel panel = new JPanel(new GridLayout(3, 2, 5, 5)); // 5 píxeles de espacio horizontal y vertical
19
20
// Añadir botones al panel
21
for (int i = 1; i <= 6; i++) {
22
panel.add(new JButton("Botón " + i));
23
}
24
25
// Añadir el panel al frame
26
frame.add(panel);
27
}
28
29
public void mostrar() {
30
frame.setVisible(true);
31
}
32
33
public static void main(String[] args) {
34
SwingUtilities.invokeLater(() -> {
35
EjemploGridLayout ejemplo = new EjemploGridLayout();
36
ejemplo.mostrar();
37
});
38
}
39
}

Explicación:

  1. Creamos un JPanel y le asignamos un GridLayout de 3 filas y 2 columnas.
  2. Añadimos 6 botones al panel, que se distribuirán uniformemente en la cuadrícula.
  3. Cada botón ocupará una celda completa y todos tendrán el mismo tamaño.

Aplicaciones prácticas de GridLayout

  • Ideal para crear interfaces tipo calculadora o teclado numérico.
  • Útil para formularios con campos de entrada uniformes.
  • Eficaz para crear paneles de control con botones de igual tamaño.