3

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

出于某种原因,它从来没有在我的案例陈述中出现,因为它达到了这一点:

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;
}
4

1 回答 1

3

键事件很可能正在被另一个 KeyListener.keyDown 函数使用,然后才能到达此字段。您可以通过在 keyDown() 实现中设置断点来轻松测试这一点,以确保应用程序到达该点。

要使用键事件,KeyListener 函数只需要返回 true。确保默认情况下您没有为任何其他 keyDown 实现返回 true,以确保每个实现只使用它使用的键。

于 2009-06-03T00:40:57.973 回答