2011-06-29 6 views
0

2つのビットマップピクチャを含むcustombuttonFieldがあるとします.2つの矢印(1つは左に、もう1つは右にあります)とユーザーがこのボタンをクリックすると、アプリケーションの矢印が赤くなります。 。私はこれをクリックすると、同じ画面をクリックしてevevtを実行します。私はint変数を使用していますを呼び出してcustombutonfieldに読み込む画像を決定します。 pushScreen()を呼び出さずに、同じ画面からcustomButtonFieldを更新する(ビットマップを更新する)方法はありますか?私の上記のコードでブラックベリーのCustomButtonFieldについて

public void fieldChanged(Field field, int context) 
{ 
    if(field == bf1) 
    { 

     if(pic_status == 0) 
     { 
      b =1; 


     } 
     UiApplication.getUiApplication().pushScreen(new Screen2(b));  


    } 

Uは、ユーザが ボタンをクリックした場合、私は同じ画面を押すメートルことを見てきました。 PlzはpushScreen()を呼び出さずにコードを更新します。

答えて

1

以下は、2つの画像を持つcustomButtonFieldのコードです。 1つはフォーカス画像用、もう1つは通常画像用です。

ボタンイメージを更新するには、通常のイメージに対してsetBitmapメソッドを呼び出すだけです。 以下のコードを変更することができます。 setBitmapメソッドを呼び出した後、invalidate()メソッドを呼び出す必要があります。

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

class BitmapButtonField extends BitmapField 
{ 
    Bitmap mNormal; 
    Bitmap mFocused; 
    String text; 
    int mWidth; 
    int mHeight; 
    public Bitmap bitmap = null; 

    public BitmapButtonField(String text,Bitmap normal, Bitmap focused) 
    { 
     super(normal,FOCUSABLE); 
     mNormal = normal; 
     mFocused = focused; 
     mWidth = mNormal.getWidth(); 
     mHeight = mNormal.getHeight(); 
     this.text=text; 
     setMargin(0, 0, 0, 0); 
     setPadding(0, 0, 0, 0); 
    } 
    public void setBitmap(Bitmap bitmap) 
    { 
     mNormal=bitmap; 

     this.bitmap=bitmap; 
    } 
    public void setfocusBitmap(Bitmap bitmap) 
    { 
     mFocused=bitmap; 
    } 
    public String getText() 
    { 
     return text; 
    } 
    public void setText(String text) 
    { 
     this.text=text; 
    } 
    protected void paint(Graphics graphics) { 
     Bitmap bitmap = mNormal; 
     if(isFocus()) 
     { 
      bitmap = mFocused; 
     } 
     else 
     { 
      bitmap = mNormal; 
     } 

     graphics.drawBitmap(0, 0, bitmap.getWidth(), bitmap.getHeight(), 
         bitmap, 0, 0); 
     LabelField l=new LabelField(text); 

     graphics.drawText(text, bitmap.getWidth()/2-l.getPreferredWidth()/2+3, bitmap.getHeight()/2-l.getPreferredHeight()/2);  
    } 
    protected void drawFocus(Graphics graphics, boolean on) { 
    } 
    protected void onFocus(int direction) { 
     invalidate(); 
     super.onFocus(direction); 
    } 
    protected void onUnfocus() { 
     invalidate(); 
     super.onUnfocus(); 
    } 
    public int getPreferredWidth() { 
     return mWidth; 
    } 

    public int getPreferredHeight() { 
     return mHeight; 
    } 

    protected void layout(int width, int height) { 
     setExtent(mWidth, mHeight); 
    } 
} 
+0

いいえ....上記のコードは、customButtonFieldに焦点を当て、焦点を合わせるためのコードです。 click event.Plz help ... –

+0

フォーカスとフォーカスの両方に同じ画像を使用できます。ボタンクリックでsetBitmap(new_image)とsetfocusBitmap(new_image)を呼び出す必要があります。 Plz try、これは完全に動作します。 –

+0

あなたの心のこもったヘルプのためのThanx ...実際には私はsetBitmap()関数に気づいていませんでしたが、今はうまく実行され、実行可能です... –

関連する問題