3

Blackberryでカスタマイズされたラベルフィールドを使用してテキストを複数行で表示するには? 次のコードを使用すると、希望のフォント サイズでラベルを表示できますが、幅が制限されている場合、テキストが途切れて表示されず、ラベルの残りの部分が次の行に表示されないという問題があります。

ここでのヘルプは大歓迎です。

以下は、カスタマイズされたラベル フィールドのコードです。

public class GrayBgLabelField extends LabelField {  

    private int width = Display.getWidth();
    private int height = 40;
    private String label;   
    private Font font;

    public GrayBgLabelField(){
        super();
    }

    public GrayBgLabelField(String label, int fieldWidth){
        super(label, 0 );
        this.label = label;
        width = fieldWidth;     
    }

    public GrayBgLabelField(String label, int fieldWidth , long style){
        super( label, style );
        this.label = label;
        width = fieldWidth;     
    }

    public GrayBgLabelField(String label, int fieldWidth , int fieldHeight){

        this(label,fieldWidth);
        this.label = label;
        height = fieldHeight;
    }

    public GrayBgLabelField(String label, int fieldWidth , int fieldHeight, long style){

        super( label, style );
        this.label = label;
        width = fieldWidth;
        height = fieldHeight;
    }

    protected void layout( int maxWidth, int maxHeight)
    {         
        super.layout( width, height);  
        setExtent( width, height);
    }

    protected void paint(Graphics g) {

        if(font !=null){
            g.setFont(font);
        }

        if (label.length() != 0) {          
            g.drawText(label, width/30, height/4);
        }
        g.setColor(Color.BLACK);

    }

    public void setFont(int f){
        font = this.getFont().derive(f);        
    }

    public void setFont(Font font){
        this.font = font;
    }

    protected void paintBackground(Graphics g) {
        int oldColor = g.getColor();
        try {
            g.setColor(0xF5F6F8);  // Gray-DDDDDD color code.
            g.fillRect(0, 0, getWidth(), getHeight());          
        } finally {
            g.setColor(oldColor);
        }
    }
}
4

1 に答える 1

2

カスタム フィールドの幅と高さを制御するメソッドをオーバーライドします。

チュートリアルは次のとおりです。「カスタム フィールドの作成方法」

また、ラベル フィールドのテキストを変更する場合は、invalidate()メソッドを使用して無効にし、画面上のフィールドの内容を再描画します。

于 2012-10-06T05:27:11.083 に答える