BlackBerry - ButtonField con Bitmap centrado

Tengo una clase que se extiende desde ButtonField:

class BitmapButtonField extends ButtonField
{
    private Bitmap _bitmap;
    private int _buttonWidth;
    private int _buttonHeight;

    BitmapButtonField(Bitmap bitmap, int buttonWidth, int buttonHeight, long style) 
    {    
        super(style);
        _buttonWidth = buttonWidth;
        _buttonHeight = buttonHeight;
        _bitmap = bitmap;
    }

    public int getPreferredHeight() 
    {
        return _buttonHeight;
    }

    public int getPreferredWidth() 
    {
        return _buttonWidth;
    }

    protected void layout(int width, int height) 
    {
        setExtent(Math.min( width, getPreferredWidth()), Math.min( height, getPreferredHeight()));
    }

    protected void paint(Graphics graphics) 
    {       
        // THIS IS NOT CENTERED
        int x = (getPreferredWidth() - _bitmap.getWidth()) >> 1;
        graphics.drawBitmap(x, 0, _bitmap.getWidth(), _bitmap.getHeight(), _bitmap, 0, 0);

        // THIS IS NOT LEFTMOST, TOPMOST
        graphics.drawBitmap(0, 0, _bitmap.getWidth(), _bitmap.getHeight(), _bitmap, 0, 0);
    }
} 

Si pudo ver en mis comentarios sobre el método de pintura, claramente la posición del ButtonField 0,0 no está exactamente en la esquina superior izquierda del botón, de alguna manera está acolchada con un desplazamiento desconocido, por lo que el centrado de la imagen es difícil.

Pero si me extiendo desde una clase de campo, el problema desaparece, pero necesito seguir extendiéndome desde ButtonField ya que necesito el borde y el estilo de enfoque de ButtonField (rectángulo redondeado azul-blanco), solo necesito mostrar la imagen centrada en un ButtonField. y aún conservando todos los atributos estándar de ButtonField.

¿Hay alguna manera de eliminar el desplazamiento acolchado en el método de pintura en un ButtonField? He intentado setPadding y setMargin pero no tuve tanta suerte. ¡Muchas gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta