|
Buscador
Secciones
Otras zonas
Registro
Foros
Recomendamos
|
Para la mayoría de los diálogos modales sencillos, se crea y se muestra el diálogo utilizando uno de los métodos showXxxDialog de JOptionsPane. Para ejemplos de utilización de los siguientes métodos, puedes ver DialogDemo.java. Si nuestro diálogo debería ser un frame interno, se añade Internal después de show -- por ejemplo, showInternalMessageDialog.
El soporte de iconos de JOptionPane permite especificar qué icono mostrará el diálogo. Podemos utilizar un icono personalizado, no utilizar ninguno, o utilizar uno de los cuatro iconos estándard de JOptionPane (question, information, warning, y error). Cada aspecto y comportamiento tiene sus propias versiones de los cuatro iconos estándard. La siguiente imagen muestra los iconos utilizados en el Aspecto y Comportamiento Java (popularmente conocido como Metal).
Por defecto, un diálogo creado con showMessageDialog muestra el icono de información, un diálogo creado con showConfirmDialog o showInputDialog muestra un icono question. Para especificar qué un diálogo estándard no tenga icono o tenga otro icono estándard, se añade un parámetro que especifica el tipo de mensaje. El valor del tipo de mensaje puede ser una de las siguientes constantes: PLAIN_MESSAGE (sin icono), QUESTION_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, o ERROR_MESSAGE. Si especificamos un objeto Icon distinto de null, el diálogo muestra ese icono, no importa el tipo de mensaje que sea. Aquí tenemos un ejemplo que crea un díalogo sencillo que muestra un mensaje de error:
JOptionPane.showMessageDialog(frame,
"Eggs aren't supposed to be green.",
"Inane error",
JOptionPane.ERROR_MESSAGE);
Normalmente, el área del mensaje de un panel de opciones tiene una sóla línea de texto, como "Eggs aren't supposed to be green." Podemos dividir el mensaje en varias líneas poniendo caracteres de nueva línea (\n) dentro del string del mensaje. Por ejemplo. "Complete the sentence:\n" + "\"Green eggs and...\"" Podemos especificar el texto mostrado por los botones del panel. Un ejemplo de esto está en Personalizar el texto de los botones en un diálogo estándard. Cuando el usuario pulsa cualquier botón, el diálogo desaparece automáticamente. si no queremos que el diálogo desaparezca automáticamente -- por ejemplo, si queremos asegurarnos de que la entrada del usuario es válida antes de cerrar el diálogo -- necesitamos seguir los pasos descritos en Detener la salida Automática de un Diálogo. Cuando se llama a uno de los métodos showXxxDialog de jOptionPane, el primer argumento especifica un componente. Este componente determina la posición en la pantalla del díalogo y del frame del que éste depende. Si especificamos null para el componente, el diálogo es independiente de cualquier frame visible, y aparece en el medio de la pantalla. La siguiente figura muestra lo que sucede cuando se indica un JFrame como primer argumento. ![]()
|
Intenta esto:
|
Personalizar el texto de los botones en un diálogo estándardCuando se utiliza JOptionPane para crear un diálogo estándard, podemos elegir si utilizar el texto estándard del botón (que podría variar dependiendo del aspecto y comportamiento) o especificar un texto diferente..
El siguiente código, tomado de DialogDemo.java, crea dos diálogos Yes/No. El primer diálogo utiliza las palabras del aspecto y comportamiento para los dos botones. El segundo diálogo personaliza las palabras. Con la excepción del cambio de palabras, los diálogos son idénticos. Para personalizar las palabras, el código que crea el segundo diálogo utiliza showOptionDialog, en vez de showConfirmDialog.

./create the yes/no dialog:
int n = JOptionPane.showConfirmDialog(
frame, "Would you like green eggs and ham?",
"An Inane Question",
JOptionPane.YES_NO_OPTION);
if (n == JOptionPane.YES_OPTION) {
setLabel("Ewww!");
} else if (n == JOptionPane.NO_OPTION) {
setLabel("Me neither!");
} else {
setLabel("Come on -- tell me!");
}

./create the yes/no (but in other words) dialog:
String string1 = "Yes, please";
String string2 = "No way!";
Object[] options = {string1, string2};
int n = JOptionPane.showOptionDialog(frame,
"Would you like green eggs and ham?",
"A Silly Question",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null, //don't use a custom Icon
options, //the titles of buttons
string1); //the title of the default button
if (n == JOptionPane.YES_OPTION) {
setLabel("You're kidding!");
} else if (n == JOptionPane.NO_OPTION) {
setLabel("I don't like them, either.");
} else {
setLabel("Come on -- 'fess up!");
}
Obtener entrada del usuario desde un diálogoCómo se vió en el ejemplo anterior, los métodos showXxxDialog de JOptionPane devuelven un valor que indica la elección del usuario. Si, por otro lado, estamos diseñando un diálogo personalizado, necesitamos diseñar el API de nuestro diálogo para que pueda preguntar al usuario sobre la elección del usuario.
Para los diálogos estándard JOptionPane, los métodos showXxxDialog devuelven un entero. Los valores por defecto para este entero son YES_OPTION, NO_OPTION, CANCEL_OPTION, OK_OPTION, y CLOSED_OPTION. Excepto para CLOSED_OPTION, cada opción correponde con el botón pulsado por el usuario. Cuando se devuelve CLOSED_OPTION, indica que el usuario ha cerrado la ventana del diálogo explícitamente, en vez de elegir un botón.
Incluso si cambiamos los textos de los botones del diálogo estándard (como en el ejemplo anterior), el valor devuelto sigue siendo uno de los enteros predefinidos. Por ejemplo, un diálogo YES_NO_OPTION siempre devuelve uno e los siguientes valores: YES_OPTION, NO_OPTION, o CLOSED_OPTION.
Detener la Despedida Automática de un DiálogoPor defecto, cuando el usuario crea un botón del JOptionPane o cierra su ventana explícitamente, el diálogo desaparece. Pero ¿que pasa si queremos comprobar la respuesta del usuario antes de cerrar la ventana? En este caso, debemos implementar nuestro propio oyente de change para que cuando el usuario pulse un botón, el diálogo no desparezca automáticamente.
DialogDemo contiene dos diálogos que implementan un oyente de change. Uno de esos diálogos es un diálogo modal, implementado en CustomDialog.java, que utiliza JOptionPane para obtener los iconos estándard y para obtener asistencia en la distribución. El otro diálogo, cuyo código está abajo, utiliza un JOptionPane estándard Yes/No. Aunque este diálogo es poco más que inútil, su código es lo suficientemente sencillo como para poder utilizarlo como plantilla para diálogos más complejos.
Junto con la configuración del oyente de change, el código siguiente también llama al método setDefaultCloseOperation de JDialog e implementa un oyente de window que maneja apropiadamente el intento de cierre de la ventana. Si no nos importa ser notificados cuando el usuario cierre la ventana explícitamente, podemos ignorar el código que no está en negrita.
final JOptionPane optionPane = new JOptionPane(
"The only way to close this dialog is by\n"
+ "pressing one of the following buttons.\n"
+ "Do you understand?",
JOptionPane.QUESTION_MESSAGE,
JOptionPane.YES_NO_OPTION);
final JDialog dialog = new JDialog(frame,
"Click a button",
true);
dialog.setContentPane(optionPane);
dialog.setDefaultCloseOperation(
JDialog.DO_NOTHING_ON_CLOSE);
dialog.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
setLabel("Thwarted user attempt to close window.");
}
});
optionPane.addPropertyChangeListener(
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent e) {
String prop = e.getPropertyName();
if (dialog.isVisible()
&& (e.getSource() == optionPane)
&& (prop.equals(JOptionPane.VALUE_PROPERTY) ||
prop.equals(JOptionPane.INPUT_VALUE_PROPERTY))) {
//If you were going to check something
//before closing the window, you'd do
//it here.
dialog.setVisible(false);
}
}
});
dialog.pack();
dialog.show();
int value = ((Integer)optionPane.getValue()).intValue();
if (value == JOptionPane.YES_OPTION) {
setLabel("Good.");
} else if (value == JOptionPane.NO_OPTION) {
setLabel("Try using the window decorations "
+ "to close the non-auto-closing dialog. "
+ "You can't!");
}
El API DialogLas siguiente tablas listan los métodos y constructores más utilizados de JOptionPane y JDialog. Otros métodos que podríamos utilizar están definidos por las clases JComponent y Component.
Mostrar diálogos modales estándard (utiizando métodos de la clase JOptionPane)
| Método | Propósito |
|---|---|
| int showMessageDialog(Component, Object)
int showMessageDialog(Component, Object, String, int) int showMessageDialog(Component, Object, String, int, Icon) |
Muestra un diálogo modal con un botón. |
| int showOptionDialog(Component, Object, String, int, int, Icon, Object[], Object) | Muestra un diálogo. |
| int showConfirmDialog(Component, Object)
int showConfirmDialog(Component, Object, String, int) int showConfirmDialog(Component, Object, String, int, int) int showConfirmDialog(Component, Object, String, int, int, Icon) |
Muestra un diálogo modal que [PENDIENTE: elaborar]. |
| String showInputDialog(Object)
String showInputDialog(Component, Object) String showInputDialog(Component, Object, String, int) String showInputDialog(Component, Object, String, int, Icon, Object[], Object) |
Muestra un diálogo de entrada. |
| int showInternalMessageDialog(...)
int showInternalOptionDialog(...) int showInternalConfirmDialog(...) String showInternalInputDialog(...) |
Implementa un diálogo estándard como un frame interno. |
Métodos para utilizar JOptionPane directamente
| Método | Propósito |
|---|---|
| JOptionPane()
JOptionPane(Object) JOptionPane(Object, int) JOptionPane(Object, int, int) JOptionPane(Object, int, int, Icon) JOptionPane(Object, int, int, Icon, Object[]) JOptionPane(Object, int, int, Icon, Object[], Object) |
Crea un ejemplar de JOptionPane. |
| Frame getFrameForComponent(Component)
JDesktopPane getDesktopPaneForComponent(Component) |
Manejan métodos de clase de JOptionPane que encuentran el frame o desktop pane, respectivamente, en el que se encuentra el componente especificado. |
Otros Constructores y Métodos de JOptionPane
| Métodos | Propósito |
|---|---|
| JOptionPane()
JOptionPane(Object) JOptionPane(Object, int) JOptionPane(Object, int, int) JOptionPane(Object, int, int, Icon) JOptionPane(Object, int, int, Icon, Object[]) JOptionPane(Object, int, int, Icon, Object[], Object) |
Crea un ejemplar de JOptionPane. |
Constructores y Métodos más utilizados de JDialog
| Método | Propósito |
|---|---|
| JDialog()
JDialog(Frame) JDialog(Frame, boolean) JDialog(Frame, String) JDialog(Frame, String, boolean) |
Crea un ejemplar de JDialog. El argumento Frame, si existe, es el frame (normalmente un objeto JFrame) del que depende el diálogo. Se hace el argumento booleano true para especificar un diálogo modal, false o ausente, para especificar un diálogo no modal. También se puede especificar el título de un diálogo utilizando un argumento string. |
| Container getContentPane()
setContentPane(Container) |
Obtiene y selecciona el panel de contenido que normalmente es el contenedor de todos los componentes del diálogo. |
| int getDefaultCloseOperation()
setDefaultCloseOperation(int) |
Obtiene y selecciona lo que sucece cuando el usuario intenta cerrar el diálogo. Valores posibles: DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE (por defecto). |
| void setLocationRelativeTo(Component) | Centra el diálogo sobre el componente especificado. |
| Leer comentarios (426) | |
| Escribir comentario | |
| Puntuación: |
|
| Votar | |
| Recomendar este tutorial | |
| Estadísticas |
Copyright © 1999-2007
Programación en castellano.
Todos los derechos reservados.
Formulario de Contacto -
Datos legales -
Publicidad
Hospedaje web y servidores dedicados linux por Ferca Network
red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados