Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 如何在Blackberry上突出显示聚焦的自定义按钮字段(ImageButtonField)?_User Interface_Blackberry_Java Me - Fatal编程技术网

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

User interface 如何在Blackberry上突出显示聚焦的自定义按钮字段(ImageButtonField)?,user-interface,blackberry,java-me,User Interface,Blackberry,Java Me,我制作了一个自定义的ButtonField类,其中我有一个作为按钮的图像。然而,我希望能够选择这个图像,并知道它是被选中的,要么部分突出显示它,要么在它周围放一个正方形,无论什么。我的UI中有一个位图字段,当我选择它时,它会以蓝色高亮显示自己,但我的其他使用ImageButtonField的图像没有蓝色高亮显示。我不希望位图在选中时完全消失 代码如下: package mypackage; import net.rim.device.api.system.Bitmap; import net.

我制作了一个自定义的ButtonField类,其中我有一个作为按钮的图像。然而,我希望能够选择这个图像,并知道它是被选中的,要么部分突出显示它,要么在它周围放一个正方形,无论什么。我的UI中有一个位图字段,当我选择它时,它会以蓝色高亮显示自己,但我的其他使用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);
    }
}

任何修改该类使其工作的帮助都将非常有用。我没有成功尝试使这项工作

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

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

实际上我不太理解你的问题:)。

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

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