【问题标题】:How to highlight focused custom buttonfield (ImageButtonField) on Blackberry?如何在黑莓上突出显示焦点自定义按钮域(ImageButtonField)?
【发布时间】:2012-02-13 16:18:48
【问题描述】:

我创建了一个自定义 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);
    }
}

任何修改这个类以使其工作的帮助都会有很大帮助。我尝试完成这项工作没有成功!

【问题讨论】:

    标签: user-interface blackberry java-me


    【解决方案1】:

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

    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());
        }
    }
    

    其实我没有很好地理解你的问题:)。

    【讨论】:

    • 谢谢!天哪,我花了这么长时间才弄清楚这一点!你对我的帮助比你知道的还要多! :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多