Diálogos
El JOptionPane es un componente al estilo Pop Up que sirve como un promt o ventana de datos donde se puede pedir o desplegar información.
Este es un tipo subventana independiende de un ventana principal que puede sevir para dar alguna noticificación. Muchas de estas ventanas presentan mensajes de error o de advertencia qu mergen a partir de una ventana main o principal.
Por conveniencia o comodidad, muchos de estos componetes que tienes la función de ser diálogos informativos pueden ser instanciados directamente son depender de ninguna otra clase.
Algunos tipos de diálogos son:
- JOptionPane: los dialogos standard.
- ProgressMonitor: puede poner un diálogo que demuestre el progreso de una operación.
- JColorChooser: diálogo que también es estandard
- JFileChooser: diálogo que también es estandard
- JDialog: para crear un diálogo personalizado
El código para los diálogos simples puede ser mínimo. Por ejemplo, aquí está un diálogo informativo:

JOptionPane.showMessageDialog(frame, "hola!!! bienvenido al blog de manix");
Una descripción de diálogos
Cada diálogo es dependiente en un componente padre, generamente un JFrame. Cuando se destruye ese JFrame, están tan sus diálogos dependientes.
Un diálogo puede ser modal, es una propiedad que permite al diálogo ser parte de un componte padre. Cuando un diálogo tiene true en su modal, bloquea al usuario, evitando que éste entre el resto de las ventanas en el programa hasta que haya cerrado dicho diálogo. Cuando la propiedad modal del diálogo está en false se puede usar el diálogo sin tener un componente padre.
Cuando usamos JDialog directamente muchas de sus propiedades se ven reflejamos como un JFrame, ya tiene su propio contentPane y su defaultCloseOperation
Cuando usamos un JOptionPane, éste implementa un JDialog, entonces estamos usando un JDialog de una forma “oculta”. La razón de esto se debe a que el JOptionPane es tan solo un contenedor que automaticamente crea un JDialog y él mismo se agrega al contentPane del JDialog
El ejemplo de DialogoDemo
Aquí está un cuadro ilustrativo del ejemplo
Características del JOptionPane
Usando JOptionPane, puedes crear y modificar rápidamente diversas clases de diálogos. JOptionPane proporciona la ayuda para presentar diálogos estándar, proporcionar iconos, especificar el título del diálogo y el texto, y modificar el texto del botón. Otras características que se pueden modificar en los componentes es la forma de exhibir los dialogos en la pantalla, posició, etc. Incluso se puede poner un JOptionPane puede ser adherido a un InternaFrame
También se puede especificar el tipo de icono, auque ya trae algunos por defecto, estos iconos cambian de acuerdo al sistema operativo o según el LookandFeel que se este usando
Creando y mostrando diálogos simples
Para mostrar diálogos dependientes solo basta con usar con los diferentes tipos de JOptionPaneXXXDialog. Pero si loq ue queremos es controlar la operacion de “cerrar” del diálogo debemos instanciar directamente el JOptionPane.
Los diálogos más comunes son los JOptionPane.showInputDialog y el JOptionPane.showMessageDialog. El primero despliega un mensaje simple y un boton. El segundo ofrece la posibilidad de introducir tecto y hacer variantes en el texto del boton y/o tener una coleccionen de componentes.
Aunque no muy usados, también estan los JOptionPane.showConfirmDialog y JOptionPane.showOptionDialog. El primero trae dons botones (Si- No) y el segundo con un boton adicional (Cancelar)
En el ejemplo DialogoDemo.java podemos ver algunos diálogos de diferentes tipos, las fuentes del ejemplo la puedes ver aca:
showMessageDialog
Es un diálogo simple que presenta un boton de “Aceptar”. Se puede especificar fácilmente el mensaje, el icono, y el título que el diálogo exhibe. Aquí están algunos ejemplos del showMessageDialog que se usan:
-
JOptionPane.showMessageDialog(ventana, "El cielo es de color azul.", "Dialogo sencillo", JOptionPane.INFORMATION_MESSAGE); -
JOptionPane.showMessageDialog(ventana, "Quieres usar el Question Dialog " + "(como esto)n" + "para preguntar, OK?", "Dialogo sencillo", JOptionPane.QUESTION_MESSAGE); -
JOptionPane.showMessageDialog(ventana, "El cielo es de color azul.", "Dialogo sencillo", JOptionPane.ERROR_MESSAGE); -
JOptionPane.showMessageDialog(ventana, "El cielo es de color azul.", "Dialogo sencillo", JOptionPane.INFORMATION_MESSAGE, icono); -
JOptionPane.showMessageDialog(ventana, "El cielo es de color azul.", "Dialogo sencillo", JOptionPane.PLAIN_MESSAGE);
Los argumentos:
- Component parentComponent: Es el componente padre del diálogo, si el argumento pasa como null simplemente el diálogo se mostrará en centro de la pantalla y no tendra el foco principal si hay JFrame o alguna otra ventana
- Object message: El mensaje a mostrar, es el texto principal
- String title: El titulo que lleva el diálogo en la barra de tareas
- int optionType: El tipo de diálogo, puede ser del tipo DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION
- int messageType: El tipo de icono que tendrá el diálogo, puede ser PLAIN_MESSAGE (sin icono), ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE
- Icon icon: El icono personalizado que tendra el diálogo
- Object[] options: Estas son las opciones que tendrá el diálogo, son útiles cuando creamos nuestros propios diálogos
Deteniendo el diálogo antes de ser cerrado
Muchas veces queremos controlar algunas acciones antes de que el usuario cierre diálogo, para ello agregamos un listener para que podamos hacer algunas cosas antes de que el diálogo se cierre.
En el ejemplo DiálogoDemo, la clase DialogoDemo.java se usan dos dialogos que ejemplifican esta tarea. Unos de ellos es un Yes/No JOptionPane, en el cual se ha sobreescrito el método setDefaultCloseOperation que es el encargado de cerrar el diálogo, veamos el código:
final JDialog dialog = new JDialog(ventana,
"Clickea el boton",
true);
dialog.setContentPane(optionPane);
dialog.setDefaultCloseOperation(
JDialog.DO_NOTHING_ON_CLOSE);
dialog.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
setLabel("Usario tratando de cerrar la ventana.");
}
});
optionPane.addPropertyChangeListener(
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent e) {
String prop = e.getPropertyName();
if (dialog.isVisible()
&& (e.getSource() == optionPane)
&& (JOptionPane.VALUE_PROPERTY.equals(prop))) {
dialog.setVisible(false);
}
}
});






Hermano esta muy bueno tu blog..!!!
me sirvio mucho en relidad…Pero me gustaria que resubas todos los codigos porq simplemente te manda a una wb que dice dominio en venta
claro si esq no es mucha molestia jejejejeje
saludos y gracias