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