在BlackBerry Java中更改焦点时,如何更改field manager的背景图像

在BlackBerry Java中更改焦点时,如何更改field manager的背景图像,blackberry,blackberry-jde,Blackberry,Blackberry Jde,我是黑莓手机的新手,正在创建带有选项的菜单。每个选项都包含位图图像和标签 这是第一个菜单项的代码: hmf1_vfm1 = new VerticalFieldManager(Field.FIELD_HCENTER | VErrticalFieldManager.USE_ALL_WIDTH | VerticalFieldManager.FIELD_HCENTER | VerticalFieldManager.FOCUSABLE | Field.FOCUSABLE) { bo

我是黑莓手机的新手,正在创建带有选项的菜单。每个选项都包含位图图像和标签

这是第一个菜单项的代码:

hmf1_vfm1 = new VerticalFieldManager(Field.FIELD_HCENTER |          VErrticalFieldManager.USE_ALL_WIDTH | VerticalFieldManager.FIELD_HCENTER |   VerticalFieldManager.FOCUSABLE | Field.FOCUSABLE)
{
 boolean isFocus;
//Bitmap bmp1 = Bitmap.getBitmapResource("mnu_tile1.png");
protected void sublayout(int maxWidth, int maxHeight)
 {
super.sublayout(100,125);
setExtent(100,125);
 }

protected void paint(Graphics g) {
try
{
   //g.setBackgroundColor(0x504A4B);
   //g.drawBitmap(0, 0, bmp1.getWidth(), bmp1.getHeight(), bmp1, 0, 0);
                    g.clear();
    Background bg = BackgroundFactory.createBitmapBackground(Bitmap.getBitmapResource("mnu_tile1.png")); //mnu_tile1.png
                    this.setBackground(bg);
                    super.paint(g);
                }
                catch (IllegalArgumentException e) {
                    //SupportClass.showLog(TAG+" err 2 : "+e);
                }
            }

            protected void onFocus(int direction) {
                isFocus = true;
                super.onFocus(direction);
            }
            protected void onUnfocus() {
                isFocus = false;
                super.onUnfocus();
            }

            protected boolean navigationClick(int status, int time) {

                //SupportClass.showLog("New Order...navigationClick");
                return true;
            }
            public boolean isFocusable() {
                return true;
            }
            /*protected boolean touchEvent(net.rim.device.api.ui.TouchEvent message) {

                //SupportClass.showLog("New Order...touchEvent");
                return true;
            };*/
        };
位图和标签字段将添加到此vfm。顺便说一下

BitmapField bfNO = new BitmapField(bmpNO,Field.FIELD_HCENTER | Field.FOCUSABLE)
        {
            protected boolean navigationClick(int status, int time) {
                SupportClass.showLog("bitmap...navigationClick");
                return true;
            }
            protected void paint(Graphics graphics) {
                //this.setBackground(BackgroundFactory.createSolidTransparentBackground(Color.BLACK,0));
                super.paint(graphics);
            }
        };

LabelField txtNO = new LabelField("New Order",LabelField.FIELD_HCENTER | Field.FOCUSABLE )
        {
            protected void paint(Graphics g) {
                g.setColor(Color.WHITE);
                //g.setBackgroundColor(0x00000000);
                super.paint(g);
            }
            protected boolean navigationClick(int status, int time) {
                SupportClass.showLog("lable...navigationClick");
                return true;
            }
        };
  • 我想聚焦包含图像和标签的垂直场管理器,设置背景时我看不到背景。我猜背景上有一层重叠

  • 我还想将字段的选择器颜色(蓝色背景)更改为透明

  • 请告诉我我犯了什么错误


您好,请尝试使用invalidate()方法

你检查过这里的PictureBackgroundButtonField.java吗。。。!这是一年多前提出的问题。如果OP仍然对回复感兴趣,请更新问题,我将提供一些帮助。否则,回答这个问题似乎没有任何价值,因为代码是具体的,我怀疑其他更好的问题中已经涵盖了对此可能提出的一般要点。