Java 在BlackBerry列表字段中绘制边框

Java 在BlackBerry列表字段中绘制边框,java,blackberry,bitmap,border,listfield,Java,Blackberry,Bitmap,Border,Listfield,我已经为我的BlackBerry应用程序实现了一个带有自定义ListFieldCallback的ListField。除了两个问题外,它运行良好: 首先,我指定的位图仅在第一行绘制。它不在后面的任何其他行中绘制(但是,文本绘制得很好) 其次,我想在当前选定的ListField元素周围绘制一个蓝色边框。为此,我重写了ListField的drawFocus()以不包含任何内容,并且在navigationMovement()方法中将ListField设置为invalidate()。正在第一行绘制边界,但

我已经为我的BlackBerry应用程序实现了一个带有自定义ListFieldCallback的ListField。除了两个问题外,它运行良好:

首先,我指定的位图仅在第一行绘制。它不在后面的任何其他行中绘制(但是,文本绘制得很好)

其次,我想在当前选定的ListField元素周围绘制一个蓝色边框。为此,我重写了ListField的drawFocus()以不包含任何内容,并且在navigationMovement()方法中将ListField设置为invalidate()。正在第一行绘制边界,但没有其他任何边界。有人知道为什么吗?这是我的相关代码:

ListField实例化:

ListField lf = new ListField() {
            protected void drawFocus(Graphics graphics, boolean on) {
            }

            protected boolean navigationMovement(int dx, int dy,
                    int status, int time) {
                this.invalidate(this.getSelectedIndex());
                return super.navigationMovement(dx, dy, status, time);
            }
            protected boolean navigationClick(int status, int time) {
                return true;
            }
        };

        lf.setEmptyString("No items.", DrawStyle.HCENTER);
        _callback = new ListCallback(vector, Bitmap
                .getBitmapResource("image.png"));
        lf.setCallback(_callback);
        add(lf);

        lf.setSize(vector.size());
自定义ListField回调:

if (index == list.getSelectedIndex()) {
        g.setColor(0x4096cc);
        g.drawBitmap(5, (bitmapHeight - fontHeight) * 2,
                _bitmap.getWidth(), _bitmap.getHeight(), _bitmap, 0, 0);
        g.drawText(text, _bitmap.getWidth() + 15,
                y, 0, w);
         g.drawRect(0, 0, list.getWidth(), list.getRowHeight());
    } else {
        g.setColor(0x4096cc);
        g.drawBitmap(5, (bitmapHeight - fontHeight) * 2,
                _bitmap.getWidth(), _bitmap.getHeight(), _bitmap, 0, 0);
        g.drawText(text, _bitmap.getWidth() + 15,
                y, 0, w);
    }

谢谢

如果没有所有代码,很难准确判断,但是您的drawText调用使用y值,而其他调用不使用y值,因此这就解释了为什么它们都在同一个位置绘制。

您是对的,修复了my drawBitmap()和drawRect()以利用y实现了这一技巧。非常感谢。