Question

Je veux placer plusieurs LabelFields avec le texte aligné à droite sur un MainScreen avec un fond bleu alice. Malheureusement, je ne peux pas sembler comprendre comment y arriver.

Le mieux que je peux faire est de mettre mon backround à Color.ALICEBLUE sur un LabelFields de mainScreen et placer sur l'écran (également avec un fond bleu alice).

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

et ...

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

Outrepasser la routine de peinture MainScreen me donne mon alice fond bleu, mais remplaçant les routines de peinture des LabelFields ne semble pas être suffisant. Le résultat est une ligne blanche, avec un fond bleu alice derrière le texte de l'étiquette seulement. Ajout USE_ALL_WIDTH corrige le problème de fond, mais je ne peux pas aligner à droite USE_ALL_WIDTH.

Quelqu'un sait-il un travail autour de cela?

Était-ce utile?

La solution

Dans les versions <= 4.5, vous pouvez créer VerticalFieldManager avec de la peinture overrided ():

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

Utilisez ensuite sur l'écran que vous êtes en ajoutant LabelField simple il:

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

Dans les versions> = 4.6, vous pouvez utiliser la méthode setBackgroud () pour le gestionnaire d'écran par défaut:

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

Voir BB KB DB-00131 - Comment - Changer la couleur de fond d'un écran

Autres conseils

Utilisez

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

sans substituant la méthode de peinture de la LabelField.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top