2009-07-09 63 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从未实际抛出,如果指定一个未知名称,它会回退到另一个字体系列。