2012-02-13 8 views
1

ボタンとしてイメージを持っているカスタムButtonFieldクラスを作成しました。しかし、私はこの画像を選択して、その画像を部分的にハイライト表示したり、その周囲に正方形を置いたりすることで、選択されていることを知りたいと思っています。自分のUIにBitmapFieldがあり、それを選択すると青でハイライト表示されますが、ImageButtonFieldを使用する他の画像には青のハイライトがありません。ビットマップが選択されたときに完全に消えないようにしたい。ブラックベリーでフォーカスされたカスタムボタンフィールド(ImageButtonField)を強調表示する方法は?

package mypackage; 

import net.rim.device.api.system.Bitmap; 
import net.rim.device.api.system.Characters; 
import net.rim.device.api.ui.component.BitmapField; 

    public class ImageButtonField extends BitmapField{ 

    public ImageButtonField(Bitmap image) { 
     super(image); 
    } 

    public boolean isFocusable() { 
     return true; 
    } 

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

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

    protected boolean keyChar(char character, int status, int time) { 
     if(Characters.ENTER == character || Characters.SPACE == character) { 
      fieldChangeNotify(0); 
      return true; 
     } 
     return super.keyChar(character, status, time); 
    } 
} 

すべてのヘルプ、それは動作しますので、このクラスを変更する非常に役立つだろう。ここ

は、コードがあります。私はこの仕事をしようとすると成功しなかった!デフォルトのスタイルを削除するには

答えて

4

では、次のメソッドを追加することができます属性:

protected void applyTheme(Graphics arg0, boolean arg1) { 
} 

protected void drawFocus(Graphics graphics, boolean on) { 
} 

あなたはpaintメソッドをオーバーライドして、例えば、フォーカス状態をチェックすることによって、あなたが好きなペイントを行うことができます次のコードは、ビットマップイメージの上に赤い透明なレイヤーをペイントします。

protected void paint(Graphics graphics) { 
    super.paint(graphics); 
    if (isFocus()) { 
     graphics.setGlobalAlpha(128); 
     graphics.setColor(0xFF0000); 
     graphics.fillRect(0, 0, getWidth(), getHeight()); 
    } 
} 

実際、私はあなたの質問をよく理解していませんでした。

+0

感謝!神はこれを理解するのに私を非常に長くかかりました!あなたは知っている以上に私を助けました! :D –

関連する問題