代码之家  ›  专栏  ›  技术社区  ›  MikeyB

如何检测字段子类中的“删除”键?

  •  3
  • MikeyB  · 技术社区  · 15 年前

    我正在尝试检测并覆盖黑莓键盘上的删除键。

    出于某种原因,它永远不会出现在我的案例陈述中,因为当它到达那个点时:

    Keypad.key(keycode) == 8
    Keypad.KEY_DELETE == 127
    

    我的错误是什么?

    public class MyField extends ListField implements KeyListener {
    // ...
    /** Implementation of KeyListener.keyDown */
    public boolean keyDown(int keycode, int time) {
        boolean retval = false;
        switch (Keypad.key(keycode)) {
        /* DELETE - Delete the timer */
        case Keypad.KEY_DELETE:
            if (Keypad.status(keycode) == KeyListener.STATUS_SHIFT) {
                _myDeleteCmd.run();
                retval = true;
            }
            break;
    
        default:
            retval = super.keyDown(keycode, time);
        }
        return retval;
    }
    
    1 回复  |  直到 15 年前
        1
  •  3
  •   Fostah    15 年前

    很可能是另一个keyListener.keydown函数在键事件到达该字段之前正在使用它。通过在keydown()实现中设置一个断点来确保应用程序达到这一点,您可以很容易地对此进行测试。

    要使用键事件,keyListener函数只需返回true。确保在默认情况下不会为任何其他keydown实现返回true,以确保每个实现只使用它使用的键。