3

BlackberryキーボードのDeleteキーを検出して上書きしようとしています。

何らかの理由で、それがそのポイントに達したときのように、それが私のcaseステートメント内に入ることが決してありません:

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 に答える