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:
- Importar las clases necesarias:
javax.swing.JFrame
. - Crear una clase que extienda
JFrame
o instanciar unJFrame
directamente. - Configurar la ventana (título, tamaño, comportamiento al cerrar).
- 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 esnull
.
4. Ciclo de vida de una ventana en Swing
Una ventana en Swing pasa por diferentes fases:
- Creación: Se instancia un objeto
JFrame
. - Configuración: Se establecen tamaño, título y comportamiento.
- Visualización: Se usa
setVisible(true)
. - Interacción: El usuario interactúa con la ventana y sus componentes.
- 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 desetSize()
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 preferirLayoutManager
.
6. Ejemplo práctico
Objetivo
Crear una ventana en Java Swing que tenga:
- Un título personalizado.
- Un tamaño predefinido.
- 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