【发布时间】:2011-11-19 10:26:16
【问题描述】:
我正在尝试添加一个 TextField。我在用
EditField _textBox = new EditField("Subject", "Some text"); 用于创建标签为 Subject 的文本框。我只想更改文本框标签(主题)的颜色。
【问题讨论】:
标签: blackberry application-design blackberry-editfield
我正在尝试添加一个 TextField。我在用
EditField _textBox = new EditField("Subject", "Some text"); 用于创建标签为 Subject 的文本框。我只想更改文本框标签(主题)的颜色。
【问题讨论】:
标签: blackberry application-design blackberry-editfield
您将需要一个自定义字段来执行此操作,因为无法更改 EditField 标签的颜色,即使您覆盖 EditField.paint()。
我的建议是:
HorizontalFieldManager的类(例如CustomEditField)
LabelField 用于标签,EditField 用于可编辑文本代码如下:
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 中获取的任何其他特定方法,但作为概念证明,这是可行的。
【讨论】:
你可以Overridepaint()方法,也可以调用setColor(int RGB)方法给你想要的颜色可能会有所帮助
【讨论】:
EditField _textBox = new EditField("Subject","Some text")
{
public void paint(Graphics g)
{
getManager().invalidate();
g.setColor(_color);
super.paint(g);
}
}
【讨论】: