Domanda

Voglio posizionare diversi LabelFields con testo allineato a destra su un MainScreen con uno sfondo blu alice. Purtroppo non riesco a capire come realizzare questo obiettivo.

Il meglio che posso fare è impostare il mio backround a Color.ALICEBLUE su un MainScreen e luogo LabelFields sullo schermo (anche con uno sfondo blu alice).

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

e ...

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

mi Superamento della vernice di routine MainScreen dà il mio alice sfondo blu, ma ignorando le routine di dipingere il LabelFields' non sembra essere sufficiente. Il risultato è una riga bianca, con uno sfondo blu alice dietro solo il testo dell'etichetta. Aggiunta USE_ALL_WIDTH corregge il problema di fondo, ma non posso proprio allinearsi con USE_ALL_WIDTH.

Qualcuno sa un lavoro in giro per questo?

È stato utile?

Soluzione

Nelle versioni <= 4.5 è possibile creare VerticalFieldManager con vernice 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);
    }
}

Quindi utilizzare su sei schermo aggiungendo semplice labelField ad esso:

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

Nelle versioni> = 4.6 è possibile utilizzare setBackgroud () metodo per direttore schermata predefinita:

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

Vedere BB KB DB-00131 - Come - Cambiare il colore di uno schermo di sfondo

Altri suggerimenti

Usa

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

senza l'override del metodo paint della labelField.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top