如何在Blackberry上突出显示焦点自定义按钮字段(ImageButtonField)?

时间:2012-02-13 16:18:49

标签: user-interface blackberry java-me

我创建了一个自定义的ButtonField类,我将图像作为按钮。但是,我希望能够选择这个图像并知道它已被选中,无论是通过部分突出显示它还是围绕它放置一个正方形,无论如何。我的UI中有一个BitmapField,当我选择它时会以蓝色突出显示,但是我使用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);
    }
}

任何帮助修改此类以使其有效都会有很大帮助。我试图让这项工作没有成功!

1 个答案:

答案 0 :(得分:4)

要删除默认样式属性,您可以添加以下方法:

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

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

您可以通过检查焦点状态来覆盖绘制方法并绘制任何所需的颜色,例如下面的代码将在位图图像上绘制一个红色透明层。

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

其实我不太清楚你的问题:)。