2009-08-10 42 views
3

我想在具有愛麗絲藍色背景的MainScreen上放置幾個帶有右對齊文本的LabelField。不幸的是我似乎無法弄清楚如何做到這一點。Blackberry - 設置LabelField背景顏色

我可以做的最好的事情是在MainScreen上將我的背景設置爲Color.ALICEBLUE,並將LabelFields放置在屏幕上(也帶有愛麗絲藍色背景)。

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

重寫MainScreen油漆例行給我我愛麗絲藍色的背景,但重寫LabelFields'油漆程序似乎並不足夠。結果是一個白色的行,僅在標籤文本後面有一個愛麗絲藍色背景。添加USE_ALL_WIDTH可以糾正背景問題,但我不能正確對齊USE_ALL_WIDTH

有沒有人知道這方面的工作?

回答

6

在<版本= 4.5,你可以用overrided paint()方法創建VerticalFieldManager:

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屬性是:

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重寫paint方法。 – 2009-08-11 23:40:45

3

使用

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

沒有覆蓋將labelField的paint方法。

+0

很好用!爲了獲得背景顏色設置,我實際上需要重寫paint方法.. – 2009-08-11 23:39:49