user interface - una - ¿Cómo resaltar el campo de botones personalizados enfocados(ImageButtonField) en Blackberry?
como crear un boton en processing (1)
Hice una clase personalizada de ButtonField donde tengo una imagen como un botón. Sin embargo, me gustaría poder seleccionar esta imagen y saber que está seleccionada, ya sea al destacarla parcialmente o al ponerle un cuadrado, lo que sea. Tengo un mapa de bits en mi interfaz de usuario que se resalta en azul cuando lo selecciono, pero mis otras imágenes que usan ImageButtonField no tienen el resaltado azul. No quiero que el mapa de bits desaparezca por completo cuando se lo seleccione.
aquí está el código:
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);
}
}
Cualquier ayuda que modifique esta clase para que funcione sería de gran ayuda. ¡No he tenido éxito tratando de hacer que esto funcione!
Para eliminar los atributos de estilo predeterminados, puede agregar los siguientes métodos:
protected void applyTheme(Graphics arg0, boolean arg1) {
}
protected void drawFocus(Graphics graphics, boolean on) {
}
Puede anular el método de pintura y pintar lo que desee comprobando el estado del foco, por ejemplo, el siguiente código dibujará una capa roja transparente sobre la imagen del mapa de bits.
protected void paint(Graphics graphics) {
super.paint(graphics);
if (isFocus()) {
graphics.setGlobalAlpha(128);
graphics.setColor(0xFF0000);
graphics.fillRect(0, 0, getWidth(), getHeight());
}
}
En realidad, no entendí bien tu pregunta :)