Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Tutorial de Java Swing: Construyendo aplicaciones GUI robustas

¿Qué es Swing en Java?

Java Swing es un toolkit GUI sofisticado e independiente de plataforma que extiende el Abstract Window Toolkit (AWT). Ofrece un rico conjunto de widgets —botones, tablas, árboles y más— permitiendo a los desarrolladores crear aplicaciones de escritorio pulidas sin reinventar componentes básicos.

Como parte de las Java Foundation Classes (JFC), Swing se basa en la funcionalidad central de AWT mientras proporciona componentes ligeros y personalizables. El resultado es un framework que soporta características avanzadas de UI, como cambios de look-and-feel, pintura personalizada y enlace de datos.

En este tutorial dominarás:

Diagrama de jerarquía de clases de Java Swing

Tutorial de Java Swing: Construyendo aplicaciones GUI robustas

Todos los componentes Swing heredan de JComponent y pueden añadirse a clases contenedoras.

¿Qué es una clase contenedora (Container Class)?

Las clases contenedoras son la columna vertebral de cualquier UI Swing — contienen y organizan otros componentes. Como mínimo, una aplicación Swing requiere un contenedor. Hay tres tipos principales de contenedores:

  1. JPanel – Un contenedor ligero, no ventana, usado para agrupar componentes.
  2. JFrame – Una ventana de nivel superior que incluye barra de título, bordes y menú del sistema.
  3. JDialog – Una ventana emergente modal o no modal para solicitudes al usuario.

¿Qué es GUI en Java?

Interfaz Gráfica de Usuario (GUI) en Java proporciona una capa visual intuitiva para que los usuarios interactúen con aplicaciones. Ensamblando botones, etiquetas, campos de texto y otros widgets, los desarrolladores crean experiencias atractivas que abstraen la lógica subyacente.

Cómo construir una GUI en Java (Paso a paso)

A continuación se muestra un recorrido práctico que ilustra cómo construir una ventana básica y añadir componentes progresivamente.

Paso 1 – Crear un nuevo archivo Java

Copia el siguiente código en tu editor:

import javax.swing.*;
class GuiDemo {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Mi Primera GUI");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        JButton boton = new JButton("Pulsar");
        frame.getContentPane().add(boton);
        frame.setVisible(true);
    }
}

Paso 2 – Compilar y Ejecutar

Guarda el archivo, compila con javac GuiDemo.java, luego ejecuta con java GuiDemo. Debería aparecer una ventana de 300 × 300 con un solo botón.

Paso 3 – Añadir otro botón

Modifica el código para incluir un segundo botón:

import javax.swing.*;
class GuiDemo {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Mi Primera GUI");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        JButton boton1 = new JButton("Botón 1");
        JButton boton2 = new JButton("Botón 2");
        frame.getContentPane().add(boton1);
        frame.getContentPane().add(boton2);
        frame.setVisible(true);
    }
}

Paso 4 – Observar el problema de layout

Ejecutar el código ahora muestra dos botones superpuestos porque el gestor de layout por defecto para JFrame es BorderLayout, que coloca componentes en cinco regiones distintas. Sin especificar una región, los componentes subsiguientes reemplazan a los anteriores.

Gestores de Layout (Layout Managers) en Java

Los gestores de layout controlan cómo se organizan los componentes dentro de los contenedores. Elegir el gestor adecuado es crítico para GUIs responsivas y mantenibles. Los más usados son:

  • BorderLayout
  • FlowLayout
  • GridBagLayout
  • BoxLayout (no cubierto aquí)

BorderLayout

BorderLayout divide un contenedor en cinco áreas: NORTH, SOUTH, EAST, WEST y CENTER. Es el gestor por defecto para JFrame.

Tutorial de Java Swing: Construyendo aplicaciones GUI robustas

FlowLayout

FlowLayout organiza componentes secuencialmente en una fila, saltando a la siguiente línea según sea necesario. Es el gestor por defecto para JPanel.

Tutorial de Java Swing: Construyendo aplicaciones GUI robustas

GridBagLayout

GridBagLayout ofrece la mayor flexibilidad, permitiendo que los componentes ocupen múltiples filas o columnas y se alineen precisamente dentro de una cuadrícula.

Tutorial de Java Swing: Construyendo aplicaciones GUI robustas

Ejemplo: Construyendo una ventana de chat simple

A continuación se muestra un programa completo que demuestra cómo combinar menús, un área de texto y un panel de control en una interfaz de chat cohesiva.

Tutorial de Java Swing: Construyendo aplicaciones GUI robustas

Intenta codificarlo tú mismo antes de revisar la solución.

// Aplicación Swing completa que incluye menús, área de texto y controles
import javax.swing.*;
import java.awt.*;
class GuiDemo {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Chat Frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
        // Barra de menú
        JMenuBar menuBar = new JMenuBar();
        JMenu menuArchivo = new JMenu("ARCHIVO");
        JMenu menuAyuda = new JMenu("Ayuda");
        menuBar.add(menuArchivo);
        menuBar.add(menuAyuda);
        JMenuItem itemAbrir = new JMenuItem("Abrir");
        JMenuItem itemGuardar = new JMenuItem("Guardar como");
        menuArchivo.add(itemAbrir);
        menuArchivo.add(itemGuardar);
        // Panel inferior con FlowLayout (por defecto)
        JPanel panel = new JPanel();
        panel.add(new JLabel("Introducir Texto"));
        panel.add(new JTextField(10));
        panel.add(new JButton("Enviar"));
        panel.add(new JButton("Reiniciar"));
        // Área de texto en el centro
        JTextArea areaTexto = new JTextArea();
        // Añadir componentes al frame usando BorderLayout
        frame.getContentPane().add(BorderLayout.SOUTH, panel);
        frame.getContentPane().add(BorderLayout.NORTH, menuBar);
        frame.getContentPane().add(BorderLayout.CENTER, areaTexto);
        frame.setVisible(true);
    }
}

Java

  1. Desarrollar una aplicación de consola PLCnext usando C#: Guía para principiantes
  2. Optimiza aplicaciones Java 9 en PLCnext Control usando Jlink
  3. Despliegue de aplicaciones Java EE en Microsoft Azure: guía paso a paso
  4. Creación de listas de cadenas en VHDL: Buenas prácticas y ejemplo
  5. Tutorial de arrays en Java: Declaración, creación e inicialización – Código de ejemplo
  6. Crear un array de objetos en Java: Guía paso a paso
  7. Generar números aleatorios en Java: Guía práctica con Random y Math.random
  8. Lectura de archivos en Java con BufferedReader – Guía práctica con ejemplos
  9. Convertir Char a String en Java – Ejemplos Prácticos y Mejores Prácticas
  10. Invertir una Cadena en Java Usando Recursión – Guía Paso a Paso
  11. Java 10: Mejorar Rendimiento con Compartición de Datos de Clase de Aplicación (CDS)