Important Notice - Forums is archived
To simplify things and help our users to be more productive, we have archived the current forum and focus our efforts on helping developers on Stack Overflow. You can post new questions on Stack Overflow or join our Discord channel.

Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.
modal window is not removed
hello vaadin community, I'm from Colombia, I do not speak English very well so use google translator to translate it into Spanish, and can hope enterder:
I am making an application with vaadin and created an interface that extends to a VerticalLayout within the call a modal window which I think is fine, but doing tests when I call a lot and I press the esc key not removed the window, I have to take several times to remove it, and not due to this, if anyone can help me thank you very much, this is the code:
class VentanaDeDialogo extends Window implements Action.Handler {
/**
*
*/
private static final long serialVersionUID = 1352115603382072699L;
Action esc = new ShortcutAction("ESCAPE",
ShortcutAction.KeyCode.ESCAPE, null);
Action[] actions = new Action[] { esc };
/**
* Constructor de la clase {@link VentanaDeDialogo}
*
* @param icono
* icono de la ventana
* @param titulo
* titulo de la ventana
* @param msj
* contenido de la ventana
* @param ancho
* ancho de la ventana
*/
VentanaDeDialogo(Resource icono, String titulo, String msj, String ancho) {
Label texto = new Label(msj, 3);
setStyleName("dialog");
setModal(true);
setCaption(titulo);
setIcon(icono);
setWidth(ancho);
setResizable(false);
addActionHandler(this);
// texto del la ventana
addComponent(texto);
// Algo hay que enfocar en la ventana para capturar métodos
// abreviados Esta es una limitación conocida
// http://dev.vaadin.com/ticket/4384
HorizontalLayout buttons = new HorizontalLayout();
buttons.setSpacing(true);
buttons.setWidth("100%");
Button aceptar = new Button("Aceptar");
aceptar.setDescription("Presione la Tecla Escape \"Esc\" para salir...");
aceptar.setStyleName("default");
buttons.addComponent(aceptar);
buttons.setComponentAlignment(aceptar, 16, 32);
addComponent(buttons);
aceptar.focus();
}
public void handleAction(Action action, Object sender, Object target) {
if (action == esc) {
((Window) getParent()).removeWindow(this);
}
}
public Action[] getActions(Object target, Object sender) {
return actions;
}
}
private Window getW() {
if (getParent() == null) {
setParent(this);
}
return getParent().getWindow();
}
to create the window I use the following:
getW().addWindow(
new VentanaDeDialogo(
u.trError,
" Error: " + oper,
"Ocurrio un Error al Validar la informacion, guarde lo datos e intente mas tarde",
"370px"));
this class and getw function () is inside the CALSE extending to VerticalLayout
thank you very much for your help
/////////////////////////////////
hola a la comunidad de vaadin, soy de Colombia, no hablo muy bien el ingles asi que utilice el traductor de google para traducirlo al español, espero y se pueda enterder:
estoy realizando una aplicacion con vaadin y he creado una interfaz que extiende a un VerticalLayout, dentro de el llamo una ventana modal lo cual me resulta bien, pero haciendo pruebas, cuando la llamo muy seguido y presiono la tecla esc no se quita la ventana, tengo que darle varias veces para poder quitarla, y no se a que se deba esto, si alguien me puede ayudar le agradezco mucho, este es el codigo:
class VentanaDeDialogo extends Window implements Action.Handler {
/**
*
*/
private static final long serialVersionUID = 1352115603382072699L;
Action esc = new ShortcutAction("ESCAPE",
ShortcutAction.KeyCode.ESCAPE, null);
Action[] actions = new Action[] { esc };
/**
* Constructor de la clase {@link VentanaDeDialogo}
*
* @param icono
* icono de la ventana
* @param titulo
* titulo de la ventana
* @param msj
* contenido de la ventana
* @param ancho
* ancho de la ventana
*/
VentanaDeDialogo(Resource icono, String titulo, String msj, String ancho) {
Label texto = new Label(msj, 3);
setStyleName("dialog");
setModal(true);
setCaption(titulo);
setIcon(icono);
setWidth(ancho);
setResizable(false);
addActionHandler(this);
// texto del la ventana
addComponent(texto);
// Algo hay que enfocar en la ventana para capturar métodos
// abreviados Esta es una limitación conocida
// http://dev.vaadin.com/ticket/4384
HorizontalLayout buttons = new HorizontalLayout();
buttons.setSpacing(true);
buttons.setWidth("100%");
Button aceptar = new Button("Aceptar");
aceptar.setDescription("Presione la Tecla Escape \"Esc\" para salir...");
aceptar.setStyleName("default");
buttons.addComponent(aceptar);
buttons.setComponentAlignment(aceptar, 16, 32);
addComponent(buttons);
aceptar.focus();
}
public void handleAction(Action action, Object sender, Object target) {
if (action == esc) {
((Window) getParent()).removeWindow(this);
}
}
public Action[] getActions(Object target, Object sender) {
return actions;
}
}
private Window getW() {
if (getParent() == null) {
setParent(this);
}
return getParent().getWindow();
}
para crear la ventana yo utilizo lo siguiente:
getW().addWindow(
new VentanaDeDialogo(
u.trError,
" Error: " + oper,
"Ocurrio un Error al Validar la informacion, guarde lo datos e intente mas tarde",
"370px"));
esta clase y la funcion getW() esta dentro de la calse que extiende al VerticalLayout
muchas gracias por su ayuda