以下は、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);
}
}
いいえ....上記のコードは、customButtonFieldに焦点を当て、焦点を合わせるためのコードです。 click event.Plz help ... –
フォーカスとフォーカスの両方に同じ画像を使用できます。ボタンクリックでsetBitmap(new_image)とsetfocusBitmap(new_image)を呼び出す必要があります。 Plz try、これは完全に動作します。 –
あなたの心のこもったヘルプのためのThanx ...実際には私はsetBitmap()関数に気づいていませんでしたが、今はうまく実行され、実行可能です... –