Blackberry Labelfield文本未换行
下面的类扩展了labelfield,但当我显示大量文本时,它不会换行。文本只是在屏幕上留下痕迹。当我使用LabelField时,文本会自动换行。是否需要更新绘制方法 谢谢Blackberry Labelfield文本未换行,blackberry,Blackberry,下面的类扩展了labelfield,但当我显示大量文本时,它不会换行。文本只是在屏幕上留下痕迹。当我使用LabelField时,文本会自动换行。是否需要更新绘制方法 谢谢 import net.rim.device.api.ui.DrawStyle; import net.rim.device.api.ui.Font; import net.rim.device.api.ui.Graphics; import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.DrawStyle;
import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.component.LabelField;
public class FCLabelField extends LabelField {
private Object text;
private Font font;
private int colour;
private long style;
public FCLabelField(Object text, long style , Font font, int colour) {
super(text, style);
this.text = text;
this.font = font;
this.colour = colour;
}
protected void paint(Graphics graphics) {
graphics.setColor(colour);
graphics.setFont(font);
graphics.drawText(text.toString(), 0, 0, DrawStyle.HCENTER, getContentWidth());
}
}
这项工程—
import net.rim.device.api.ui.DrawStyle;
import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.component.LabelField;
public class FCLabelField extends LabelField {
private Object text;
private Font font;
private int colour;
private long style;
public FCLabelField(Object text, long style , Font font, int colour) {
super(text, style);
this.text = text;
this.colour = colour;
super.setFont(font);
}
protected void paint(Graphics graphics) {
graphics.setColor(this.colour);
super.paint(graphics);
}
}
在第一个版本中,您正在重写
paint
方法,而不是调用超类“paint
方法。在第二种情况下,这允许基类中的代码绘制文本
如果不想调用超类“paint
方法,则必须更改paint方法以计算要绘制的字符串的范围,并在适当的点拆分它,多次调用drawText
以在不同的y位置分别绘制每个片段。默认情况下,LabelField
中的paint
方法就是这样做的,因此您需要对其进行仿真
当您确实调用超类
paint
方法时,在超类上设置字体有效而在paint
方法中设置字体无效的原因是,超类的paint
方法正在调用Graphics
对象上的setFont
,覆盖您刚才在paint
方法中所做的操作。Hmm,我想知道,您是否可以自己运行setColor和setFont语句,然后调用super.paint(graphics)
?这应该可以解决您的问题。@Scott W您不妨将您的评论升级为答案。尝试了此操作后,行换行,但字体未更新。因此,它修复了一个错误,但似乎导致了另一个错误。在超级类上设置字体是可行的。请参阅对问题的编辑。我不知道为什么?谢谢你的帮助