Для этого вам понадобится настраиваемое поле, потому что невозможно изменить цвет метки EditField
, даже если вы переопределите EditField.paint()
.
Мое предложение:
- Создать класс (например,
CustomEditField
), который расширяет HorizontalFieldManager
- Добавьте к этому 2 поля, a
LabelField
дляметка и EditField
для редактируемого текста - Переопределите метод paint () для LabelField, чтобы установить нужный цвет.
Вот код:
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, но в качестве доказательства концепции это работает.