Frage

Ich mag mehrere LabelFields mit rechtsbündigem Text auf einem Mainscreen mit einem alice blauen Hintergrund platzieren. Leider kann ich nicht scheinen, um herauszufinden, wie das passieren zu machen.

Das Beste, was ich tun kann, meinen Hintergrund zu Color.ALICEBLUE auf einem Mainscreen und Ort LabelFields auf dem Bildschirm eingestellt ist (auch mit einem alice blauen Hintergrund).

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

und ...

    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);  
        }
    };

die Farbe Routine Mainscreen Aufschalten gibt mir meine alice blauen Hintergrund, aber das Überschreiben der Farbe LabelFields Routinen scheint nicht ausreichend zu sein. Das Ergebnis ist eine weiße Zeile, mit einem alice blauen Hintergrund hinter dem Label nur Text. Hinzufügen USE_ALL_WIDTH korrigiert den Hintergrund Problem, aber ich kann mit USE_ALL_WIDTH nicht richtig ausgerichtet sind.

Kennt jemand eine Arbeit um für das?

War es hilfreich?

Lösung

In Versionen <= 4.5 können Sie VerticalFieldManager erstellen mit overrided 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);
    }
}

Sie es dann auf youre Bildschirm verwenden Hinzufügen einfacher Labelfield, um es:

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));
    }
}

In Versionen> = 4.6 Sie können setBackgroud () -Methode für Standard-Bildschirm-Manager:

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));
    }
}

Siehe BB KB DB-00131 - Wie - ändern Sie die Hintergrundfarbe eines Bildschirms

Andere Tipps

Mit

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

ohne Überschreiben der paint-Methode des Labelfield.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top