2012-12-19 67 views
0

期间笨拙我有黑莓5点& 6点O的问题上模拟器 标签字段变得笨拙,当我设置字体在黑莓 同一运行正常7标签字段变成字体设置

这里是我的样本代码

LabelField _lblTitle3 = 
     new LabelField(offerStatus, 
        USE_ALL_WIDTH | Field.FIELD_VCENTER | 
        LabelField.ELLIPSIS | Field.NON_FOCUSABLE) { 

     protected void drawFocus(Graphics graphics, boolean on) { 
     }; 

     protected void paintBackground(Graphics graphics) { 
      String offerStatus = _offerObj.getCategoryStatus(); 

      int color; 
      if (offerStatus.equalsIgnoreCase("Saved")) 
       color = Color.BLUE; 
      else if (offerStatus.equalsIgnoreCase("Accepted!")) 
       color = Color.GREEN; 
      else 
       color = Color.BLACK; 

      if (_isFocus) { 
       graphics.setColor(Color.WHITE); 
      } else { 
       graphics.setColor(color); 
      } 

      super.paint(graphics); 
     }; 
    }; 

    Font myFont = Font.getDefault(); 
    FontFamily typeface = FontFamily.forName("Times New Roman"); 
    int fType = Font.BOLD 
    int fSize = 12 
    myFont = typeface.getFont(fType, fSize); 
    _lblTitle3.setFont(myFont); 

图片低于

See the Field overlap

回答

3

你想做什么?只要改变字体颜色?

如果是这样,您可能不想覆盖paintBackground()

在执行paintBackground()的过程中,您需要拨打super.paint()。我不确定那会做什么,但如果那是错误的,我不会感到惊讶。

paint()paintBackground()是两个单独的事情。

如果您只是想要改变字体颜色,取决于文本和焦点状态,只需将该逻辑放在paint()方法中,并将paintBackground()单独留下(不要覆盖它)。另外,当您更改Graphics上下文时,要执行诸如设置新颜色之类的操作,通常先存储旧颜色并稍后重置该颜色通常更安全。事情是这样的:

 protected void paint(Graphics graphics) { 
      int oldColor = graphics.getColor(); 

      String offerStatus = _offerObj.getCategoryStatus(); 
      int color; 
      if (offerStatus.equalsIgnoreCase("Saved")) 
       color = Color.BLUE; 
      else if (offerStatus.equalsIgnoreCase("Accepted!")) 
       color = Color.GREEN; 
      else 
       color = Color.BLACK; 

      if (_isFocus) { 
       graphics.setColor(Color.WHITE); 
      } else { 
       graphics.setColor(color); 
      } 
      super.paint(graphics); 

      graphics.setColor(oldColor); 
     }; 
+0

它工作正常,谢谢 – Exhausted

+0

非常欢迎:) – Nate