我对Blackberry 5&在模拟器上6 Os 设置字体时,标签字段变得笨拙 在Blackberry 7中运行良好
这是我的示例代码
LabelField _lblTitle3 =
new LabelField(offerStatus,
USE_ALL_WIDTH | Field.FIELD_VCENTER |
LabelField.ELLIPSIS | Field.NON_FOCUSABLE) {
protected void drawFocus(Graphics graphics, boolean on) {
};
protected void paintBackground(Graphics graphics) {
String offerStatus = _offerObj.getCategoryStatus();
int color;
if (offerStatus.equalsIgnoreCase("Saved"))
color = Color.BLUE;
else if (offerStatus.equalsIgnoreCase("Accepted!"))
color = Color.GREEN;
else
color = Color.BLACK;
if (_isFocus) {
graphics.setColor(Color.WHITE);
} else {
graphics.setColor(color);
}
super.paint(graphics);
};
};
Font myFont = Font.getDefault();
FontFamily typeface = FontFamily.forName("Times New Roman");
int fType = Font.BOLD
int fSize = 12
myFont = typeface.getFont(fType, fSize);
_lblTitle3.setFont(myFont);
图片位于
之下
答案 0 :(得分:3)
你想做什么?只需更改字体颜色?
如果是这样,您可能不想覆盖paintBackground()
。
在paintBackground()
的实施中,您正在呼叫super.paint()
。我不确定那会怎么做,但如果那是错误的话我也不会感到惊讶。
paint()
和paintBackground()
是两个不同的东西。
如果您只想更改字体颜色,具体取决于文本和焦点状态,只需将该逻辑放在paint()
方法中,然后单独留下paintBackground()
(不要覆盖它)
此外,当您更改Graphics
上下文时,要执行设置新颜色等操作,首先存储旧颜色通常更安全,并在以后重置它。像这样:
protected void paint(Graphics graphics) {
int oldColor = graphics.getColor();
String offerStatus = _offerObj.getCategoryStatus();
int color;
if (offerStatus.equalsIgnoreCase("Saved"))
color = Color.BLUE;
else if (offerStatus.equalsIgnoreCase("Accepted!"))
color = Color.GREEN;
else
color = Color.BLACK;
if (_isFocus) {
graphics.setColor(Color.WHITE);
} else {
graphics.setColor(color);
}
super.paint(graphics);
graphics.setColor(oldColor);
};