仅更改Blackberry中TextField标签的颜色

时间:2011-11-19 10:26:16

标签: blackberry application-design blackberry-editfield

我正在尝试添加TextField。我在用 EditField _textBox = new EditField("Subject", "Some text");用于创建标签为主题的文本框。我想更改文本框的标签(主题)的颜色。

3 个答案:

答案 0 :(得分:1)

您需要自定义字段才能执行此操作,因为即使您覆盖EditField,也无法更改EditField.paint()标签的颜色。

我的建议是:

  • 创建一个扩展CustomEditField
  • 的类(例如HorizontalFieldManager
  • 为此添加2个字段,标签为LabelField,可编辑文字为EditField
  • 覆盖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获得的任何其他特定方法,但作为概念验证,这可行。

答案 1 :(得分:0)

您可以Override使用paint()方法并调用setColor(int RGB)方法来提供您想要的颜色可能会有所帮助

答案 2 :(得分:-2)

EditField _textBox = new EditField("Subject","Some text")
{
public void paint(Graphics g) 
{
        getManager().invalidate();
        g.setColor(_color);
        super.paint(g);
}
}