Вопрос

Я хочу разместить несколько полей меток с выровненным по правому краю текстом на главном экране с синим фоном alice.К сожалению, я, кажется, не могу понять, как это сделать.

Лучшее, что я могу сделать, это настроить фон на цветной.Выведите ALICEBLUE на главный экран и разместите на нем поля меток (также с синим фоном alice).

    public void paint(Graphics graphics) {
        graphics.setBackgroundColor(Color.ALICEBLUE);
        graphics.clear();
        super.paint(graphics);  
    }

и...

    LabelField display = new LabelField("", LabelField.FIELD_RIGHT){
        public void paint(Graphics graphics) {
            graphics.setColor(Color.DIMGRAY);
            graphics.setBackgroundColor(Color.ALICEBLUE);
            graphics.clear();
            super.paint(graphics);  
        }
    };

Переопределение процедуры рисования на главном экране дает мне мой синий фон alice, но переопределение процедур рисования LabelFields, похоже, недостаточно.В результате получается белая строка с синим фоном alice только за текстом надписи.Добавление USE_ALL_WIDTH исправляет фоновую проблему, но я не могу выровнять по правому краю с USE_ALL_WIDTH.

Кто-нибудь знает обходной путь для этого?

Это было полезно?

Решение

В версиях <= 4.5 вы можете создать VerticalFieldManager с переопределенным paint():

class BGManager extends VerticalFieldManager {
    public BGManager() {
        super(USE_ALL_HEIGHT|USE_ALL_WIDTH);
    }
    public void paint(Graphics graphics)
    {
        graphics.setBackgroundColor(Color.DARKRED);
        graphics.clear();
        super.paint(graphics);
    }
}

Затем используйте его на своем экране, добавив к нему простое поле метки:

class Scr extends MainScreen {
    BGManager manager = new BGManager();
    public Scr() {
        super();
        add(manager);       
        manager.add(new LabelField("Hello!", FIELD_RIGHT));
        manager.add(new LabelField("This is a test", FIELD_RIGHT));
    }
}

В версиях >= 4.6 вы можете использовать метод setBackgroud() для диспетчера экрана по умолчанию:

class Scr extends MainScreen {  
    public Scr() {
        super();
        VerticalFieldManager manager = 
            (VerticalFieldManager)getMainManager();
        manager.setBackground(
            BackgroundFactory.createSolidBackground(
                Color.DARKRED));        
        manager.add(new LabelField("Hello!", FIELD_RIGHT));
        manager.add(new LabelField("This is a test", FIELD_RIGHT));
    }
}

Видишь BB KB DB-00131 - Как изменить цвет фона экрана

Другие советы

Использование

new LabelField("",LabelField.USE_ALL_WIDTH | DrawStyle.RIGHT);

без переопределения метода paint для LabelField.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top