Я не совсем уверен, что вы подразумеваете под «это событие запускает изменение фокуса». Разве это не то, что вы хотите?
В прошлом месяце я работал над пользовательской кнопкой «Растровое изображение», и в итоге я создал подкласс Field и сам обработал рисунок. Я не помню, почему подкласс BitmapField не работал, но вы можете посмотреть на это. У вас было бы немного больше контроля.
Кроме того, вам необходимо добавить вызовы к invalidate()
в ваших onFocus
и onUnFocus
методах, потому что это приведет к тому, что поле будет перекрашено с использованием нового растрового изображения. Наконец, подумайте о переопределении drawFocus()
и ничего не делайте внутри этого метода, потому что это предотвратит рисование стандартного стиля фокуса (синий ореол). Если вы этого не хотите, но если у вас есть собственное фокусное изображение, это может быть нежелательно.
Если вы опубликуете более подробную информацию о проблеме, я могу попытаться помочь, но я не уверен, в чем проблема.
Отредактировано, чтобы добавить:
Я посмотрел свои заметки и нашел эту ссылку,
http://www.thinkingblackberry.com/archives/167
и, на второй взгляд, в каталоге samples \ com \ rim \ samples \ device \ устройства BB JDE 5.0 есть настраиваемая кнопка demo. Он реализует в основном именно то, что описывает этот пост в блоге, это может быть полезно. В этом сообщении в блоге описывается рисование пользовательской кнопки, а не использование растрового изображения, но это та же идея. В методе paint(Graphics g)
вы бы сделали
protected void paint(Graphics g) {
g.drawBitmap(0,0,getWidth(),getHeight(),bmp,0,0);
}
Примеры RIM включают PictureBackgroundButtonField
, который реализует кнопку Bitmap. Это то, что я использовал и имеет больше деталей, чем то, что я написал выше.