如何将焦点设置在Bitmap Field上,蓝色不可见,黑莓

时间:2010-02-23 09:40:54

标签: blackberry java-me blackberry-storm

我正在使用包含小图片的位图字段。

当焦点出现在该图像上时,焦点的蓝色不会出现,如何设置焦点宽度和高度

我的代码::

contract_image_field = new BitmapField(contract_image,Field.FOCUSABLE)
 {
       public void getFocusRect(XYRect rect) 
      {
       rect.width=0;
       rect.height=0;
       //super.getFocusRect(rect);
      }
       protected void onFocus(int direction) 
       {
        myScreen.this.invalidate();
      super.onFocus(direction);
     }
       protected void onUnfocus() 
       {
        myScreen.this.invalidate();
      super.onUnfocus();
     }
      };
      contract_image_field.setBitmap(contract_image);

这就是我使用图像字段的方式,

虽然我的图片是可点击的,但我看不到蓝色(我想要那个请帮忙!!!)

在getFocusRect中更改宽度和高度值甚至不能解决问题

3 个答案:

答案 0 :(得分:4)

您还可以避免增加字段范围; 使用以下代码:

BitmapField bitmapField = new BitmapField(bitmap, BitmapField.FOCUSABLE)
{
     protected void drawFocus(Graphics graphics, boolean on) 
     {
          setSpace(5, 5);
          super.drawFocus(graphics, on);
     }       
};

答案 1 :(得分:3)

实际上焦点在那里,但你看不到,因为焦点区域与场的整个范围相同。如果你想看焦点矩形增加字段范围。

BitmapField  bitmapField = new BitmapField(bitmap,Field.FOCUSABLE){
            protected void layout(int width, int height) {
                setExtent(bitmap.getWidth()+10, bitmap.getHeight()+10);
            }

        };

答案 2 :(得分:0)

Ashraf的建议是正确的,只是我会尽量避免在每个drawFocus调用中设置'space'。

只需在有问题的bitmapField上调用setSpace(int, int)成员一次。