2009-07-09 62 views

回答

9

下面是其具有延伸labelField和展示瞭如何設置字體的ResponseLabelField一個帖子: http://supportforums.blackberry.com/rim/board/message?board.id=java_dev&thread.id=37988

下面是你一個快速的代碼片段:

LabelField displayLabel = new LabelField("Test", LabelField.FOCUSABLE) 
    { 
     protected void paintBackground(net.rim.device.api.ui.Graphics g) 
     { 
      g.clear(); 
      g.getColor(); 
      g.setColor(Color.CYAN); 
      g.fillRect(0, 0, Display.getWidth(), Display.getHeight()); 
      g.setColor(Color.BLUE);    
     } 
    }; 

    FontFamily fontFamily[] = FontFamily.getFontFamilies(); 
    Font font = fontFamily[1].getFont(FontFamily.CBTF_FONT, 8); 
    displayLabel.setFont(font); 

有人糾正我,如果我錯誤,但我相信通過在fontFamily陣列中使用不同的索引來選擇不同的字體。

編輯:下面是一個測試應用程序,你可以用它來字體之間切換:http://blackberry-digger.blogspot.com/2009/04/how-to-change-fonts-in-blackberry.html

21

你可以只使用LabelField.setFont。如果您不在標籤字段中明確執行此操作,則該字段將使用其管理器使用的任何字體(等等向上)。

有幾種獲取字體的方法。一個是獲得一個從現有的字體(在這種情況下,我得到的默認字體的粗體版本):

LabelField labelField = new LabelField("Hello World"); 
Font myFont = Font.getDefault().derive(Font.BOLD, 9, Ui.UNITS_pt); 
labelField.setFont(myFont); 

另一種是得到一個特定的字體系列和派生從字體(在這裏得到一個12磅斜體):

LabelField labelField = new LabelField("Hello World"); 
FontFamily fontFamily = FontFamily.forName("BBCasual"); 
Font myFont = fontFamily.derive(Font.ITALIC, 12, Ui.UNITS_pt); 
labelField.setFont(myFont); 

幾件事情需要注意:我用UNITS_pt(點),而不是UNITS_px(像素)。這是一個好主意,通常因爲黑莓設備而在屏幕尺寸和分辨率(DPI)頗有幾分使用點會給你跨設備提供更加一致的外觀,而不是讓你的文字看起來很渺小的Bold或8900(或巨大的曲線或珍珠)。

同樣在第二個例子中,forName可以拋出一個ClassCastException,您必須捕獲它(這是一個檢查的異常),但根據Javadocs從未實際拋出,如果指定一個未知名稱,它會回退到另一個字體系列。