【发布时间】:2011-02-18 08:46:35
【问题描述】:
下面的类扩展了 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;
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);
}
}
【问题讨论】:
-
嗯,我想知道,与其自己执行
graphics.drawText,不如运行setColor 和setFont 语句,然后调用super.paint(graphics)?这应该可以解决您的问题。 -
@Scott W 您不妨将您的评论提升为答案。
-
试过了,换行了,但字体没有更新。所以它修复了错误,但似乎导致了另一个错误。
-
在超类上设置字体有效。查看对问题的编辑。我不知道为什么?感谢您的帮助
标签: blackberry