Цвет фона CodenameOne

#background-color #codenameone

#цвет фона #codenameone

Вопрос:

У меня проблема с настройкой цвета фона текстового поля:

 private TextField mValueField;

public void setFgColor(int color) {
    mValueField.getAllStyles().setBgTransparency(0xFF);

    if (color == Controller.WHITE_COLOR) {
        mValueField.getAllStyles().setBgColor(0xFFFFFF);
    } else if (color == Controller.RED_COLOR) {
        mValueField.getAllStyles().setBgColor(0xFF0000);
    }
}
 

Первый вызов устанавливает белый цвет, последующие вызовы устанавливают белый или красный цвет, но фон текстового поля остается белым все время. Если я изменю цвет первого вызова на красный, то цвет фона текстового поля станет красным, но также никогда не изменится, если позже установить значение white.

Ответ №1:

После изменения цвета bg вы должны немедленно вызвать mValueField.getComponentForm().repaint(); или mValueField.getParent().repaint();

Комментарии:

1. Я бы также добавил, что, поскольку текстовое поле имеет границу, цветной фон не будет иметь значения. Так mValueField.getAllStyles().setBorder(null) бы установить цвет, но это, вероятно, не «правильный путь»… Я бы предложил использовать setUIID("TextFieldInvalid") и стилизовать это. Похоже, это то, что он пытается сделать