在 GWT 中单击 ESCAPE(ESC) 时关闭对话框

Posted

技术标签:

【中文标题】在 GWT 中单击 ESCAPE(ESC) 时关闭对话框【英文标题】:close Dialogbox when click ESCAPE(ESC) in GWT 【发布时间】:2011-05-17 03:44:49 【问题描述】:

如何在单击 ESC 键时关闭的对话框中添加 addCloseHandler 之类的内容?

【问题讨论】:

【参考方案1】:

您可以覆盖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;
        
    

【讨论】:

唯一的问题是这是预览事件,所以它可以由一些对话框子处理。例如,选择(ListBox)用 esc 等关闭。对于这种情况,我使用 CellBasedWidgetImpl#isFocusable 的 dup 来检查 event.getNativeEvent().getTarget().cast()。 非常感谢,在 google 中搜索,结果排在首位,这对我来说很有效 而我更喜欢 if (event.getTypeInt() == Event.ONKEYDOWN) 而不是 switch/break,但两者都可以工作。【参考方案2】:
@Override
 public boolean onKeyDownPreview(char key, int modifiers) 
     switch (key) 
       case KeyCodes.KEY_ESCAPE:
         hide();
         break;
     

     return true;
 

【讨论】:

不幸的是方法已被弃用,我不能使用它

以上是关于在 GWT 中单击 ESCAPE(ESC) 时关闭对话框的主要内容,如果未能解决你的问题,请参考以下文章

在 EditorGridPanel (gwt-ext) 中单击时选择文本

qt怎么让esc关闭maninwindow

键盘Esc键怎么设置关闭窗口

如何使用 Python 和 Selenium 发送 ESC 键以关闭弹出窗口?

GWT CellTable,单击时禁用 ButtonCell

按下 Escape 键时关闭 VB.NET 表单