Clases y Objetos

La clase JOptionPane

Aprendamos sobre la clase JOptionPane en Java, una herramienta útil para mostrar diálogos gráficos y obtener entradas del usuario de manera sencilla.

Dentro de la programación en Java, la clase JOptionPane es una herramienta muy útil para mostrar diálogos gráficos y obtener entradas del usuario de manera sencilla. Esta clase forma parte del paquete javax.swing y proporciona métodos estáticos para crear diferentes tipos de diálogos, como mensajes de información, advertencias, errores, confirmaciones y solicitudes de entrada.

Importar la clase JOptionPane

Para utilizar la clase JOptionPane, primero debes importarla en tu programa:

import javax.swing.JOptionPane;

Mostrar un mensaje

Puedes mostrar un mensaje simple utilizando el método showMessageDialog:

JOptionPane.showMessageDialog(null, "¡Hola, mundo!");

Variantes de showMessageDialog

El método showMessageDialog tiene varias variantes que te permiten personalizar el tipo de mensaje que deseas mostrar. Por ejemplo, puedes especificar el tipo de mensaje utilizando constantes como JOptionPane.INFORMATION_MESSAGE, JOptionPane.WARNING_MESSAGE, JOptionPane.ERROR_MESSAGE, entre otros.

Veamos cada una de estas variantes:

// Mensaje de información
JOptionPane.showMessageDialog(null, "Este es un mensaje de información.", "Información", JOptionPane.INFORMATION_MESSAGE);

// Mensaje de advertencia
JOptionPane.showMessageDialog(null, "Este es un mensaje de advertencia.", "Advertencia", JOptionPane.WARNING_MESSAGE);

// Mensaje de error
JOptionPane.showMessageDialog(null, "Este es un mensaje de error.", "Error", JOptionPane.ERROR_MESSAGE);

Solicitar una entrada

Si deseas solicitar una entrada del usuario, puedes usar el método showInputDialog:

String nombre = JOptionPane.showInputDialog("¿Cuál es tu nombre?");
JOptionPane.showMessageDialog(null, "¡Hola, " + nombre + "!");

Sin embargo, ten en cuenta que el método showInputDialog devuelve un valor de tipo String, por lo que si necesitas obtener un número, deberás convertirlo utilizando métodos como Integer.parseInt o Double.parseDouble. Así mismo, la función showInputDialog puede devolver null si el usuario cancela la entrada, por lo que es importante manejar este caso para evitar errores en tu programa.

String edadStr = JOptionPane.showInputDialog("¿Cuál es tu edad?");
if (edadStr != null) {
    try {
        int edad = Integer.parseInt(edadStr);
        JOptionPane.showMessageDialog(null, "Tienes " + edad + " años.");
    } catch (NumberFormatException e) {
        JOptionPane.showMessageDialog(null, "Por favor, ingresa un número válido.");
    }
} else {
    JOptionPane.showMessageDialog(null, "Entrada cancelada.");
}

Variantes de showInputDialog

El método showInputDialog también tiene variantes que te permiten personalizar el mensaje y el título del diálogo, así como el tipo de mensaje que deseas mostrar. En general esta función tiene 6 que se diferencian por la cantidad de parámetros que reciben, veamos ahora algunas de estas variantes:

// Solicitar una entrada con un mensaje personalizado
String nombre = JOptionPane.showInputDialog("¿Cuál es tu nombre?");

// Solicitar una entrada con un valor inicial
String nombre = JOptionPane.showInputDialog("¿Cuál es tu nombre?", "Juan");

// Solicitar una entrada con un mensaje personalizado y un título
String nombre = JOptionPane.showInputDialog(null, "¿Cuál es tu nombre?", "Entrada de usuario", JOptionPane.QUESTION_MESSAGE);

Confirmar una acción

Si deseas confirmar una acción antes de ejecutarla, puedes usar el método showConfirmDialog:

int respuesta = JOptionPane.showConfirmDialog(null, "¿Estás seguro de que deseas continuar?", "Confirmación", JOptionPane.YES_NO_OPTION);
if (respuesta == JOptionPane.YES_OPTION) {
    JOptionPane.showMessageDialog(null, "Has elegido continuar.");
} else {
    JOptionPane.showMessageDialog(null, "Has elegido cancelar.");
}

Variantes de showConfirmDialog

El método showConfirmDialog también tiene variantes que te permiten personalizar el mensaje, el título y el tipo de mensaje que deseas mostrar. En general esta función tiene 6 variantes que se diferencian por la cantidad de parámetros que reciben, veamos ahora algunas de estas variantes:

// Confirmar una acción con un mensaje personalizado
int respuesta = JOptionPane.showConfirmDialog(null, "¿Estás seguro de que deseas continuar?");

// Confirmar una acción con un mensaje personalizado y un título
int respuesta = JOptionPane.showConfirmDialog(null, "¿Estás seguro de que deseas continuar?", "Confirmación", JOptionPane.YES_NO_OPTION);

// Confirmar una acción con un mensaje personalizado, un título y un tipo de mensaje
int respuesta = JOptionPane.showConfirmDialog(null, "¿Estás seguro de que deseas continuar?", "Confirmación", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);

Tipo de Opciones en showConfirmDialog

El método showConfirmDialog permite especificar el tipo de opciones que deseas mostrar al usuario utilizando constantes como JOptionPane.YES_NO_OPTION, JOptionPane.YES_NO_CANCEL_OPTION, entre otros. Estas constantes determinan qué botones se mostrarán en el diálogo de confirmación.

ConstanteDescripción
JOptionPane.YES_NO_OPTIONMuestra los botones "Sí" y "No".
JOptionPane.YES_NO_CANCEL_OPTIONMuestra los botones "Sí", "No" y "Cancelar".
JOptionPane.OK_CANCEL_OPTIONMuestra los botones "OK" y "Cancelar".
JOptionPane.DEFAULT_OPTIONMuestra un solo botón "OK".

Estilizando los diálogos con UIManager

La clase UIManager en Java Swing te permite personalizar la apariencia de los componentes de la interfaz gráfica, incluyendo los diálogos creados con JOptionPane. Puedes cambiar el estilo, los colores, las fuentes y otros aspectos visuales de los diálogos para que se adapten a la estética de tu aplicación.

Veamos los elementos que puedes personalizar utilizando UIManager:

PropiedadDescripción
OptionPane.backgroundCambia el color de fondo del diálogo.
OptionPane.messageForegroundCambia el color del texto del mensaje.
OptionPane.buttonBackgroundCambia el color de fondo de los botones.
OptionPane.buttonForegroundCambia el color del texto de los botones.
OptionPane.messageFontCambia la fuente del texto del mensaje.
OptionPane.buttonFontCambia la fuente del texto de los botones.
TextField.backgroundCambia el color de fondo de los campos de texto.
TextField.foregroundCambia el color del texto de los campos de texto.
TextField.fontCambia la fuente del texto de los campos de texto.
ComboBox.backgroundCambia el color de fondo de los cuadros de selección.
ComboBox.foregroundCambia el color del texto de los cuadros de selección.
ComboBox.fontCambia la fuente del texto de los cuadros de selección.

Recuerda que para aplicar estos cambios, debes usar el método UIManager.put antes de mostrar el diálogo con JOptionPane. Por ejemplo:

UIManager.put("OptionPane.background", Color.LIGHT_GRAY);
UIManager.put("OptionPane.messageForeground", Color.BLUE);
UIManager.put("OptionPane.buttonBackground", Color.GRAY);
UIManager.put("OptionPane.buttonForeground", Color.WHITE);
UIManager.put("OptionPane.messageFont", new Font("Arial", Font.BOLD, 14));
UIManager.put("OptionPane.buttonFont", new Font("Arial", Font.PLAIN, 12));

Resumen

La clase JOptionPane es una herramienta poderosa para interactuar con el usuario a través de diálogos gráficos en Java. Permite mostrar mensajes de información, advertencias y errores, solicitar entradas del usuario y confirmar acciones de manera sencilla y efectiva. Al utilizar esta clase, puedes mejorar la experiencia del usuario en tus aplicaciones Java y hacer que la interacción sea más amigable y visualmente atractiva.

Copyright Jesús Aurelio Castro Magaña © 2026