Diálogos¶
Introducción¶
En JavaFX, Dialog
es una clase base para crear diálogos. Un diálogo es una vista que se superpone a la vista principal e impide la interacción del usuario con la vista principal hasta que no responda al diálogo.
Un diálogo está formado por un DialogPane
, el nodo raíz del diálogo y ofrece funcionalidades necesarias para mostrarlo en un stage
. El diálogo es responsable
La clase Dialog<R>
tiene un tipo genérico que representa el tipo del resultado devuelto por el diálogo a través de la propiedad result
. Por defecto, el tipo de resultado devuelto es ButtonType
Después de instanciar el diálogo hay que configurarlo. Las propiedades relacionadas con el contenido son: contentText
, headerText
y graphic
, que corresponde a las propiedades equivalentes del DialogPane
. Dado lo habitual que es mostrar una cadena de texto, tanto como una cabecera en el contenido de un diálogo, estas propiedades son muy útiles para que se les pueda asignar directamente una cadena, sin necesidad de crear un Label
.
También se puede establecer un nodo en el área del contenido de la cabecera, teniendo en cuenta que si también se especifica una cadena, ésta será omitida.
Una vez que el diálogo ha sido configurado, hay que mostrarlo. La mayoría de las veces los diálogos son mostrados de forma modal y bloquean el código. Cuando se muestra de forma modal, evita cualquier interacción del usuario mientras el diálogo esté visible.Esto quiere decir que se mostrará el diálogo a la espera de que el usuario continue la ejecución.
Un diálogo no bloqueante implicaría escribir código necesario para asegurarse de obtener la respuesta antes de que esta sea usada. Para especificar si se quiere el comportamiento que bloquee el código o no, se utilizara respectivamente los métodos showAndWait()
or show()
.
Veamos un ejemplo:
Dialog<String> dialog = new Dialog<>();
dialog.setTitle("Login Dialog");
dialog.setContentText("Would you like to log in?");
ButtonType loginButtonType = new ButtonType("Login", ButtonData.OK_DONE);
dialog.getDialogPane().getButtonTypes().add(loginButtonType);
dialog.showAndWait();
Alert¶
La clase Alert
es una subclase de Dialog
y proporciona soporte para un número de diálogos prediseñados para solicitar información en una interface gráfica.
También están disponibles las clases TextInputDialog
and ChoiceDialog
para hacer una pregunta tipo texto o de selección, respectivamente.
Cando se crea una nueva instancia de la clase Alert
, hay que pasar como parámetro un valor de entre los disponibles en Alert.AlertType
(CONFIRMATION, ERROR, INFORMATION, NONE ou WARNING). A partir de este valor se configura apropiadamente a la ventana incluido el título, la cabecera, gráfico, así como los botones por defecto.
Al igual que un diálogo, una alerta está composta por:
- A cabecera, que se usa para mostrar una pequeña notificación con un icono.
- La región del contenido normalmente suele ser un texto utilizando el método
setContentText(String)
. También es posible mostrar un Nodo en esta región a través del métodoalert.getDialogPane().setContent(Node)
. - Una región al pie de la ventana donde se muestra los botones, pudiendo personalizarlos.