以下のクラスはlabelfieldを拡張しますが、大量のテキストを表示すると新しい行に折り返されません。テキストは画面上をたどります。 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());
}
}
これは動作します - あなたがpaint
メソッドをオーバーライドし、スーパークラスのpaint
メソッドを呼び出していない、あなたの最初のバージョンで
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あなたはあなたのコメントを回答にすることもできます。 –
これを試してみると、行は折り返されますが、フォントは更新されません。だから、バグを修正しましたが、別のバグを引き起こすようです。 –