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
- Cinco regiones: Divide el contenedor en cinco áreas:
NORTH
,SOUTH
,EAST
,WEST
yCENTER
. - Expansión automática: Los componentes se expanden para llenar su región asignada.
- Prioridad de tamaño: El componente central ocupa todo el espacio no utilizado por los otros componentes.
- Regiones opcionales: No es necesario utilizar todas las regiones.
Uso de BorderLayout
Para usar BorderLayout
:
- Crear una instancia de
BorderLayout
(aunque es el layout por defecto paraJFrame
). - Asignar componentes a las regiones específicas al añadirlos al contenedor.
Ejemplo de BorderLayout
1import javax.swing.*;2import java.awt.*;3
4public 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ícitamente18 frame.setLayout(new BorderLayout(10, 10)); // 10 píxeles de espacio horizontal y vertical19
20 // Añadir componentes a las diferentes regiones21 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:
- Creamos un
JFrame
y establecemos explícitamenteBorderLayout
como su gestor de diseño. - Añadimos botones a las regiones
NORTH
,SOUTH
,EAST
yWEST
. - Añadimos un
JTextArea
a la regiónCENTER
, que ocupará todo el espacio restante. - 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
- Distribución uniforme: Todos los componentes tienen el mismo tamaño.
- Filas y columnas configurables: Se puede especificar el número de filas y columnas.
- Expansión automática: Los componentes se expanden para llenar sus celdas.
- Orden de adición: Los componentes se añaden de izquierda a derecha y de arriba a abajo.
Uso de GridLayout
Para usar GridLayout
:
- Crear una instancia de
GridLayout
especificando el número de filas y columnas. - Asignar el
GridLayout
al contenedor. - Añadir componentes al contenedor.
Ejemplo de GridLayout
1import javax.swing.*;2import java.awt.*;3
4public 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 columnas18 JPanel panel = new JPanel(new GridLayout(3, 2, 5, 5)); // 5 píxeles de espacio horizontal y vertical19
20 // Añadir botones al panel21 for (int i = 1; i <= 6; i++) {22 panel.add(new JButton("Botón " + i));23 }24
25 // Añadir el panel al frame26 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:
- Creamos un
JPanel
y le asignamos unGridLayout
de 3 filas y 2 columnas. - Añadimos 6 botones al panel, que se distribuirán uniformemente en la cuadrícula.
- 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.