2009-08-10 3 views
3

Alice Blueの背景を持つMainScreenに右揃えのテキストを含む複数のLabelFieldを配置したいとします。残念ながら、私はそれを実現させる方法を理解していないようです。Blackberry - LabelFieldの背景色を設定する

私ができることは、私のバックラウンドをMainScreenのColor.ALICEBLUEに設定し、LabelFieldsを画面に置きます(アリスの青色の背景も含む)。 MainScreenペイントルーチンをオーバーライド

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

は私に私のアリスブルーの背景を与えるが、LabelFields'ペイントルーチンをオーバーライドすることは適切であるとは思えません。結果は白い行で、ラベルテキストの背後にはアリスの青い背景があります。 USE_ALL_WIDTHを追加するとバックグラウンドの問題は解決しますが、USE_ALL_WIDTHと右揃えできません。

誰でもこれを回避する方法はありますか?

答えて

6

):

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

そして、それに簡単なlabelFieldプロパティを追加することyoureの画面上にそれを使用する:バージョンで

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 - How to - Change the background color of a screen

+0

また素晴らしいです!さらに、このメソッドは、私が追加するすべてのLableFieldのペイントメソッドをオーバーライドする必要がなくなります。 –

3

labelFieldプロパティのpaintメソッドをオーバーライドすることなく、使用

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

。あなたは(オーバーライド塗料でVerticalFieldManagerを作成することができますバージョン< = 4.5で

+0

素晴らしい作品!バックグラウンドカラーセットを取得するには、実際にはさらにペイントメソッドをオーバーライドする必要がありました.. –

関連する問題