Изменить цвет только метки для TextField в Blackberry - PullRequest
1 голос
/ 19 ноября 2011

Я пытаюсь добавить TextField. я использую EditField _textBox = new EditField("Subject", "Some text"); для создания текстового поля с меткой Тема . Я хочу изменить цвет только надписи (Тема) текстового поля.

Ответы [ 3 ]

1 голос
/ 20 ноября 2011

Для этого вам понадобится настраиваемое поле, потому что невозможно изменить цвет метки 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, но в качестве доказательства концепции это работает.

0 голосов
/ 19 ноября 2011

Вы можете Override метод paint() и вызывать метод setColor(int RGB), чтобы получить нужный вам цвет. Может быть, это поможет

0 голосов
/ 19 ноября 2011
EditField _textBox = new EditField("Subject","Some text")
{
public void paint(Graphics g) 
{
        getManager().invalidate();
        g.setColor(_color);
        super.paint(g);
}
}
...