2010-11-29 6 views

答えて

37

あなたはDialogBoxクラスのonPreviewNativeEvent()メソッドオーバーライドすることができます。

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

おかげでクールにそれを使用することはできません!私はそれが必要でした。 –

+0

で –

+1

唯一の問題は、プレビューイベントであるため、一部のダイアログの子によって処理される可能性があることです。私はCellBasedWidgetImpl#isFocusableのdupを使用して、event.getNativeEvent()。getTarget()。cast()をチェックするために、select(ListBox)がescなどで閉じられているとします。 –

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

    return true; 
} 
+1

が、残念ながらこの方法を推奨されていません、私は事前 –

関連する問題