質問

私はAの追加に取り組んでいます BitmapField 私のブラックベリープロジェクトに。

クラスをaで実装しました FieldChangeListener 追加しました FieldChangeListener 私のクラスの方法。私も追加しました setChangeListener その特定のビットマップフィールドには、クリックイベントに応答していません。

これを修正するにはどうすればよいですか?

役に立ちましたか?

解決

まず、BitMapfieldはデフォルトではフォーカスできないため、それを修正するためにサブクラス化してオーバーライドする必要があります。次に、NavigationClickをオーバーライドして、フィールド変更されたイベントを発射します。最小フィールドのコードスニペット:

import net.rim.device.api.ui.component.BitmapField;

public class ClickableBitmapField extends BitmapField {
    public boolean isFocusable() {
        return true;
    }

    protected boolean navigationClick(int status, int time) {
        fieldChangeNotify(0);
        return true;
    }
}

これに加えて、フィールドが焦点を合わせているときに何らかの兆候を提供することをお勧めします(タッチスクリーンデバイスのみを気にしない限り)。デフォルトの実装は、ビットマップの透明な領域にハイライトを導き出すだけです。 DrawFocusをオーバーライドすることでこれを変更できます。また、FocusとOnunfocusを変更して、フォーカス状態が変更されたときに表示するビットマップを変更できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top