gpt4 book ai didi

java - 在 BlackBerry ListField 中绘制边框

转载 作者:行者123 更新时间:2023-12-01 15:57:09 26 4
gpt4 key购买 nike

我已经使用自定义 ListFieldCallback 为我的 BlackBerry 应用程序实现了 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 值,而其他调用则不使用,因此这解释了为什么它们都在同一位置绘制。

关于java - 在 BlackBerry ListField 中绘制边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4853926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com