2010-11-29 28 views

Répondre

37

Vous pouvez remplacer la méthode onPreviewNativeEvent() de la classe DialogBox:

public void onModuleLoad() { 
    ExtendedDialogBox dialog = new ExtendedDialogBox(); 

    dialog.add(new Label("some content")); 

    dialog.show(); 
} 

private class ExtendedDialogBox extends DialogBox { 

    @Override 
    protected void onPreviewNativeEvent(NativePreviewEvent event) { 
     super.onPreviewNativeEvent(event); 
     switch (event.getTypeInt()) { 
      case Event.ONKEYDOWN: 
       if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE) { 
        hide(); 
       } 
       break; 
     } 
    } 
} 
+0

merci à l'avance –

+0

Cool! j'avais besoin de ça. –

+1

le seul problème est que ceci est un événement de prévisualisation afin qu'il puisse être manipulé par un enfant de dialogue. par exemple, select (ListBox) sont fermés avec esc, etc. Pour de tels cas, j'utilise dup de CellBasedWidgetImpl # isFocusable pour vérifier event.getNativeEvent(). getTarget(). cast(). –

1
@Override 
public boolean onKeyDownPreview(char key, int modifiers) { 
    switch (key) { 
     case KeyCodes.KEY_ESCAPE: 
     hide(); 
     break; 
    } 

    return true; 
} 
+1

méthode est malheureusement dépréciée, je ne peux pas l'utiliser –