Java 自定义管理器添加到BlackBerry中的VerticalFieldManager后未正确呈现

Java 自定义管理器添加到BlackBerry中的VerticalFieldManager后未正确呈现,java,blackberry,Java,Blackberry,我有一个VerticalFieldManager,它可以渲染一个白色的圆形矩形 代码如下: VerticalFieldManager _vfmBackground = new VerticalFieldManager(Manager.NO_VERTICAL_SCROLL | Manager.NO_VERTICAL_SCROLLBAR | Manager.USE_ALL_WIDTH){ public void paint(Graphic

我有一个VerticalFieldManager,它可以渲染一个白色的圆形矩形

代码如下:

 VerticalFieldManager _vfmBackground = new VerticalFieldManager(Manager.NO_VERTICAL_SCROLL | 
                Manager.NO_VERTICAL_SCROLLBAR | Manager.USE_ALL_WIDTH){
             public void paint(Graphics graphics)
                {
                    graphics.clear();
                    graphics.setColor(Color.WHITE);
                    graphics.fillRoundRect(10, 10,460, 400, 25,25 );
                    super.paint(graphics);
                }

              protected void sublayout(int maxWidth, int maxHeight)
                {
                    int displayWidth = (Display.getWidth());
                    int displayHeight = (Display.getHeight());

                    super.sublayout( displayWidth, displayHeight);
                    setExtent( displayWidth, displayHeight);
                }

        };
然后,我创建了一个名为BaseHeaderBlueScreen的自定义管理器类,用于渲染蓝色矩形:

public void paint(Graphics graphics)
    {
     graphics.clear();
     graphics.setColor(610212);
     graphics.fillRect(20, 0, Display.getWidth(), Display.getHeight());
     super.paint(graphics);
    }

    protected void sublayout(int maxWidth, int maxHeight)
    {
        int displayWidth = (Display.getWidth()-40);
        int displayHeight = ((Display.getHeight()/2))-90;

        super.setExtent( displayWidth, displayHeight);
    }   
BaseHeaderBlueScreen _vhbs = new BaseHeaderBlueScreen(textTop, textBottom, 0);
        _vhbs.setPadding(20,30,0,0);
        _vfmBackground.add(_vhbs);
最后,我使用白色圆角矩形将该自定义管理器添加到VerticalFieldManager:

public void paint(Graphics graphics)
    {
     graphics.clear();
     graphics.setColor(610212);
     graphics.fillRect(20, 0, Display.getWidth(), Display.getHeight());
     super.paint(graphics);
    }

    protected void sublayout(int maxWidth, int maxHeight)
    {
        int displayWidth = (Display.getWidth()-40);
        int displayHeight = ((Display.getHeight()/2))-90;

        super.setExtent( displayWidth, displayHeight);
    }   
BaseHeaderBlueScreen _vhbs = new BaseHeaderBlueScreen(textTop, textBottom, 0);
        _vhbs.setPadding(20,30,0,0);
        _vfmBackground.add(_vhbs);
这就是蓝色矩形在白色矩形中的显示方式

但这就是蓝色矩形当前的显示方式(请注意其左侧的灰色空间):


我应该怎么做才能完全按照需要渲染蓝色矩形(没有左灰色边框)?

我认为您只是不必要地调用了
Graphics.clear()
clear()
用于用当前设置为背景色的任何颜色填充图形区域。通常,您会像这样使用
clear()

public void绘制(图形g){
g、 setBackgroundColor(颜色:灰色);
//调用clear会使背景变为灰色
g、 清除();
//现在画一些文字
g、 setColor(Color.WHITE);
g、 drawText(“你好”,20,40);
}
从:

将整个图形区域清除为当前背景色。请注意,在这种情况下不应用全局alpha

但是,在进行任何其他调用之前,您正在调用
clear()


因此,只需删除对
clear()
的两个调用(尽管导致此特定问题的是对
BaseHeaderBlueScreen.paint()
的调用)。

我认为您只是不必要地调用了
Graphics.clear()
clear()
用于用当前设置为背景色的任何颜色填充图形区域。通常,您会像这样使用
clear()

public void绘制(图形g){
g、 setBackgroundColor(颜色:灰色);
//调用clear会使背景变为灰色
g、 清除();
//现在画一些文字
g、 setColor(Color.WHITE);
g、 drawText(“你好”,20,40);
}
从:

将整个图形区域清除为当前背景色。请注意,在这种情况下不应用全局alpha

但是,在进行任何其他调用之前,您正在调用
clear()

因此,只需删除对
clear()
的两个调用(尽管导致此特定问题的是对
BaseHeaderBlueScreen.paint()
的调用)