2010-05-14 73 views
0

我意识到,在我的某些客户方面,当我使用Graphics2D本身提供的字体并将尺寸减小1时,它无法正确显示。Java字体显示问题

private void drawInformationBox(Graphics2D g2, JXLayer<? extends V> layer) { 
    if (MainFrame.getInstance().getJStockOptions().getYellowInformationBoxOption() == JStockOptions.YellowInformationBoxOption.Hide) { 
     return; 
    } 

    final Font oldFont = g2.getFont(); 
    final Font paramFont = new Font(oldFont.getFontName(), oldFont.getStyle(), oldFont.getSize()); 
    final FontMetrics paramFontMetrics = g2.getFontMetrics(paramFont); 
    final Font valueFont = new Font(oldFont.getFontName(), oldFont.getStyle() | Font.BOLD, oldFont.getSize() + 1); 
    final FontMetrics valueFontMetrics = g2.getFontMetrics(valueFont); 
    /* 
    * This date font cannot be displayed properly. Why? 
    */ 
    final Font dateFont = new Font(oldFont.getFontName(), oldFont.getStyle(), oldFont.getSize() - 1); 
    final FontMetrics dateFontMetrics = g2.getFontMetrics(dateFont); 

其余的字体是OK的。这里是屏幕拍摄(见的黄色框有黄色方框内的3类不同的字体。): alt text http://www.investalks.com/attachments/month_1005/10051420318460461ffea5a2f9.jpg

回答

1

你没有表现出足够的代码来确定大小是否实际上是问题...

说了这么多,你的代码会更易于阅读,如果你使用deriveFont() API,如

final Font dateFont = oldFont.deriveFont((float)(oldFont.getSize() - 1)); 

这可能会或可能不会解决你的问题。我的钱在某些区域设置,这是返回当前字体中没有字形的字符。