En casi todos los programas desarrollados en entorno gráfico es común encontrar momentos en los que se muestra una ventana informando de un error, mensaje, o pidiendo la confirmación de una determinada operación.

Pantallazo-OpenOffice.org 3.1

Para abrir una ventana de este tipo desde Java se debe utilizar la clase JOptionPane, que dispone de los siguientes métodos estáticos para mostrar distintos tipos de ventanas:

MétodoDescripción
showConfirmDialog Solicita una respuesta de confirmación del tipo si/no/cancelar.
showInputDialog Permite la introducción de un texto.
showMessageDialog Muestra un mensaje de información.
showOptionDialog Permite realizar cualquiera de las opciones anteriores.

Todos estos métodos tienen distintos tipos de uso en función de los parámetros que se utilicen. En general, se pueden utilizar los siguientes parámetros:

  • parentComponent
    • Indica el componente que va a ser padre de esta ventana, para que la ventana del mensaje se muestre encima. Si se hace la llamada a uno de los métodos anteriores desde una clase de tipo JFrame, se puede indicar con la palabra this que la clase en la que se está haciendo la llamada será el componente padre de la ventana JOptionPane. Si no se desea hacer referencia a ningún componente padre, se puede usar la palabra null para indicar que ningún objeto será el padre, y en ese caso la ventana aparecerá centrada en la pantalla, independientemente del lugar que ocupe la ventana que hace la llamada.
  • message
    • Mensaje que se mostrará en la ventana.
  • messageType
    • Tipo de mensaje que se quiere mostrar. Según el tipo de mensaje se mostrará un icono determinado. Puede ser uno de los siguientes tipos predefinidos de la clase JOptionPane:
      • ERROR_MESSAGE
      • INFORMATION_MESSAGE
      • WARNING_MESSAGE
      • QUESTION_MESSAGE
      • PLAIN_MESSAGE
  • optionType
    • Define el conjunto de botones que se mostrarán. Pueden utilizarse los siguientes tipos predefinidos en la clase JOptionPane:
      • DEFAULT_OPTION
      • YES_NO_OPTION
      • YES_NO_CANCEL_OPTION
      • OK_CANCEL_OPTION
  • options
    • Permite describir de forma más detallada los botones que se desean mostrar si no nos valen las opciones anteriores. El valor usual para este parámetro es un array de String.
  • icon
    • Icono que se desea mostrar en la ventana si no se desea el icono predefinido por el tipo de mensaje.
  • title
    • Título que se mostrará en la ventana.
  • initialValue
    • Valor por defecto para la ventana de introducción de texto.

El método showInputDialog retorna un String con el texto introducido por el usuario. El resto de los métodos retornan un valor entero con la respuesta del usuario, en función del botón que haya pulsado. Se dispone de los siguientes valores predefinidos en la clase JOptionPane para recoger la respuesta del usuario:

  • YES_OPTION
  • NO_OPTION
  • CANCEL_OPTION
  • OK_OPTION
  • CLOSED_OPTION

Ejemplos:

  • JOptionPane.showMessageDialog(this, "Error", "Se ha producido un error", JOptionPane.ERROR_MESSAGE);
  • int respuesta = JOptionPane.showConfirmDialog(null, "Guardar", "¿Desea guardar los cambios?", JOptionPane.YES_NO_OPTION);
  • String respuesta = JOptionPane.showInputDialog("Introduzca un valor");