1

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

4

3 回答 3

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 获得的任何其他特定方法,但作为概念证明,这是可行的。

于 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 回答