Introducción a Swing y creación de la primera ventana

1. ¿Qué es Swing?

Swing es una biblioteca gráfica para Java que permite crear interfaces de usuario (GUI) de manera sencilla y flexible. Es parte de Java Foundation Classes (JFC) y ofrece componentes visuales como botones, cuadros de texto, menús y tablas. A diferencia de AWT (Abstract Window Toolkit), Swing es más versátil porque es completamente escrito en Java y no depende de los componentes nativos del sistema operativo.

2. Características principales de Swing

  • Ligero: No depende de componentes gráficos nativos.
  • Flexible: Permite personalizar su apariencia con Look and Feel.
  • Extensible: Se pueden crear componentes personalizados fácilmente.
  • Basado en eventos: Responde a interacciones del usuario mediante el modelo de eventos de Java.

3. Creación de una ventana en Swing

Para crear una ventana en Swing, utilizamos la clase JFrame. Un JFrame representa una ventana con un título, bordes y controles estándar (minimizar, maximizar y cerrar).

Pasos para crear una ventana básica:

  1. Importar las clases necesarias: javax.swing.JFrame.
  2. Crear una clase que extienda JFrame o instanciar un JFrame directamente.
  3. Configurar la ventana (título, tamaño, comportamiento al cerrar).
  4. Hacerla visible.

Explicación de los métodos clave:

  • setTitle(String title): Establece el título de la ventana.
  • setSize(int width, int height): Define el tamaño de la ventana.
  • setDefaultCloseOperation(int operation): Configura qué ocurre al cerrar la ventana.
    • JFrame.EXIT_ON_CLOSE: Termina la ejecución del programa al cerrar la ventana.
  • setVisible(boolean visible): Muestra la ventana en pantalla.
  • setLocationRelativeTo(Component c): Centra la ventana en la pantalla si el argumento es null.

4. Ciclo de vida de una ventana en Swing

Una ventana en Swing pasa por diferentes fases:

  1. Creación: Se instancia un objeto JFrame.
  2. Configuración: Se establecen tamaño, título y comportamiento.
  3. Visualización: Se usa setVisible(true).
  4. Interacción: El usuario interactúa con la ventana y sus componentes.
  5. Cierre: Se finaliza la ejecución o se esconde la ventana según la configuración.

5. Buenas prácticas al trabajar con Swing

  • Siempre ejecutar código de interfaz gráfica en el Event Dispatch Thread (EDT) usando SwingUtilities.invokeLater().
  • No bloquear el EDT con operaciones pesadas, para evitar que la interfaz se congele.
  • Usar pack() en lugar de setSize() siempre que sea posible para ajustar automáticamente el tamaño de la ventana según su contenido.
  • Evitar el uso de layouts nulos (null layout) y preferir LayoutManager.

6. Ejemplo práctico

Objetivo

Crear una ventana en Java Swing que tenga:

  1. Un título personalizado.
  2. Un tamaño predefinido.
  3. Un botón que cierre la aplicación al hacer clic.

Importar las clases necesarias

Antes de escribir el código, necesitamos importar las clases de Swing.

import javax.swing.*; // Para usar JFrame y JButton
import java.awt.event.*; // Para gestionar eventos (como hacer clic en un botón)

  • javax.swing.*: Contiene todas las clases de Swing.
  • java.awt.event.*: Se usa para manejar eventos, como clics de botones.

Crear la clase principal

Vamos a crear una clase llamada MiPrimeraVentana que extienda JFrame, ya que nuestra ventana será un JFrame.

public class MiPrimeraVentana extends JFrame {
    public MiPrimeraVentana() {
        setTitle("Mi Primera Ventana en Swing"); // Establece el título
        setSize(400, 300); // Define el tamaño de la ventana (ancho x alto)
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Cierra la aplicación al cerrar la ventana
        setLocationRelativeTo(null); // Centra la ventana en la pantalla
    }
}

  • setTitle("Mi Primera Ventana en Swing") → Define el título de la ventana.
  • setSize(400, 300) → Establece el tamaño en píxeles.
  • setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) → Hace que la ventana se cierre al hacer clic en la «X».
  • setLocationRelativeTo(null) → Centra la ventana en la pantalla.

Agregar un botón de cierre

Ahora añadimos un botón para cerrar la ventana manualmente.

public class MiPrimeraVentana extends JFrame {
    public MiPrimeraVentana() {
        setTitle("Mi Primera Ventana en Swing");
        setSize(400, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        JButton botonCerrar = new JButton("Cerrar");
        botonCerrar.addActionListener(e -> System.exit(0)); // Cierra la aplicación cuando se presiona

        add(botonCerrar); // Añade el botón a la ventana

        setVisible(true); // Muestra la ventana
    }
}

  • JButton botonCerrar = new JButton("Cerrar"); → Crea un botón con la etiqueta «Cerrar».
  • botonCerrar.addActionListener(e -> System.exit(0)); → Agrega un evento para cerrar la ventana cuando se presiona.
  • add(botonCerrar); → Añade el botón a la ventana.
  • setVisible(true); → Hace visible la ventana (si no, no aparece en pantalla).

Crear el método main para ejecutar el programa

Finalmente, necesitamos un main para ejecutar la ventana.

public class MiPrimeraVentana extends JFrame {
    public MiPrimeraVentana() {
        setTitle("Mi Primera Ventana en Swing");
        setSize(400, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        JButton botonCerrar = new JButton("Cerrar");
        botonCerrar.addActionListener(e -> System.exit(0));

        add(botonCerrar);
        setVisible(true);
    }

    public static void main(String[] args) {
        new MiPrimeraVentana(); // Crea y muestra la ventana
    }
}


Explicación final

Cuando ejecutamos este código:

  • Se abre una ventana de 400×300 píxeles.
  • Muestra un botón con la etiqueta «Cerrar».
  • Si se hace clic en el botón, la aplicación se cierra.
  • Si se pulsa la «X» de la ventana, también se cierra.

7. Conclusión

En esta sesión hemos visto qué es Swing, sus características principales y cómo crear una ventana básica en Java. En la próxima sesión, aprenderemos a agregar componentes como etiquetas, botones y a manejar eventos en la interfaz.


Con esta base, tus alumnos podrán empezar a trabajar con Swing y desarrollar aplicaciones gráficas en Java. ¿Quieres que añada algún ejercicio práctico para reforzar estos conceptos?


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.