1

TextField を追加しようとしています。EditField _textBox = new EditField("Subject", "Some text");ラベルがSubjectのテキストボックスを作成するために使用 しています。テキストボックスのラベル(件名)だけ色を変えたいです。

4

3 に答える 3

1

EditFieldをオーバーライドしても のラベルの色を変更することはできないため、これを行うにはカスタム フィールドが必要になりますEditField.paint()

私の提案は次のとおりです。

  • CustomEditField拡張するクラス (例: ) を作成します。HorizontalFieldManager
  • LabelFieldこれに、ラベルEditField用と編集可能なテキスト用の2 つのフィールドを追加します。
  • LabelField の paint() メソッドをオーバーライドして、必要な色を設定します。

コードは次のとおりです。

import net.rim.device.api.ui.component.EditField;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.HorizontalFieldManager;
import net.rim.device.api.ui.Graphics;

public class CustomEditField extends HorizontalFieldManager{

    private static final int COLOR = 0x00FF0000; //colour for the label 
    private LabelField labelField; //for the label
    private EditField editField; //for the editable text

    public CustomEditField(String label, String initialValue){

        labelField = new LabelField(label){

            public void paint(Graphics g){

            g.setColor(COLOR);
                super.paint(g);
            }

        };

        editField = new EditField("", initialValue); //set the label text to an empty string

        add(labelField);
        add(editField);     
    }   
}

もちろん、EditField からテキストを設定および取得するためのメソッドや、EditField から必要なその他の特定のメソッドを追加する必要がありますが、概念実証としてこれは機能します。

于 2011-11-20T03:28:17.767 に答える
0

メソッドを呼び出して、Override必要な色を与えることができます。これが役立つ場合があり ますpaint()setColor(int RGB)

于 2011-11-19T11:11:03.693 に答える
-2
EditField _textBox = new EditField("Subject","Some text")
{
public void paint(Graphics g) 
{
        getManager().invalidate();
        g.setColor(_color);
        super.paint(g);
}
}
于 2011-11-19T10:31:34.860 に答える