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

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

【问题讨论】:

    标签: gwt keylistener dialog


    【解决方案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;
     }
    

    【讨论】:

    • 不幸的是方法已被弃用,我不能使用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多