代码之家  ›  专栏  ›  技术社区  ›  Riley Lark

keyPressEvent.getCharCode()为所有特殊键返回0,如enter、tab、escape等

  •  32
  • Riley Lark  · 技术社区  · 15 年前

    我的代码:

    @Override
    public void onKeyPress(KeyPressEvent event)
    {
        if (event.getCharCode() == KeyCodes.KEY_ENTER)
        {
            registerButton.click();
        }
    }
    

    这是附加到一个文本框上的,当我按回车键时它确实会触发。 event.getCharCode() 只是零,不是 13 . 当我按tab键时 0 0个

    昨天工作正常,项目中的其他地方也发生了一些变化,影响到了这一点——但我不确定这可能是什么。最后一天似乎没有做任何相关的改变。

    如果我处理一个 KeyUpEvent

    我正在使用GWT 2.1.0。谢谢你的意见!

    6 回复  |  直到 13 年前
        1
  •  37
  •   Abdusalam Ben Haj    13 年前

    这个 KeyPressHandler 例如用于 , 控制 中高音 钥匙。

    KeyDownHandler .

    nameField.addKeyDownHandler(new KeyDownHandler() {
    
        @Override
        public void onKeyDown(KeyDownEvent event) {
            if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
                Window.alert("hello");
            }
    
        }
    
    });
    
        2
  •  9
  •   enrybo    13 年前

    if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
    }
    
        3
  •  4
  •   Michaël BadZen    13 年前

    应使用keyupdhandler而不是KeyPresshandler。

    newSymbolTextBox.addKeyUpHandler(new KeyUpHandler() {
        @Override
        public void onKeyUp(KeyUpEvent event) {
            if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
                addStock();
            }
        }
    });
    
        4
  •  2
  •   Vin    14 年前

    他们可能会改变FF上的行为。我使用的是GWT 2.4.0和Firefox 10。根据这个 comment

    @Override
    public void onKeyPress(KeyPressEvent event) {
        int keyCode = event.getUnicodeCharCode();
        if (keyCode == 0) {
            // Probably Firefox
            keyCode = event.getNativeEvent().getKeyCode();
        }
        if (keyCode == KeyCodes.KEY_ENTER) {
            // Do something when Enter is pressed.
        }
    }
    
        5
  •  1
  •   bspoel    15 年前

    当从2.0.4更新到2.2.1时,我遇到了同样的问题,所以它似乎与gwt代码有关。

    部分问题是KeyPressedEvent代表一个本机(即浏览器特定的)按键事件。在 bug 你在这个问题上提出的意见之一是:

    然而,人们预计“逃跑”确实 生成KeyPressEvent(IE和WebKit行为);您必须使用KeyDown或KeyUp。 不幸的是,Firefox(和Opera)触发的按键事件比其他事件(IE和WebKit,它们有最合理的实现,W3C即将在DOM 3事件(AFAICT)中标准化的实现)多得多,但是在这种情况下,getCharCode()是0,因此您可以安全地忽略它们。一个例外(可能还有其他例外)是“回车”键。

    在解决这个混乱之前,最好的办法是使用KeyDownHandler或KeyUpHandler的解决方案。

        6
  •  0
  •   Sentence cre8    13 年前

    2.5吉瓦特:

    public void onKeyPress(KeyPressEvent event) {
        if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
            // Event
        }
    }
    
    推荐文章