2010-05-14 4 views
0

Je réalise que, du côté de mon client, lorsque j'utilise la police fournie par Graphics2D lui-même, et que je la diminue de 1, elle ne peut pas s'afficher correctement.Problème d'affichage des polices 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); 

Le reste de la police est OK. Voici le tournage de l'écran (voir la boîte jaune Il y a 3 autre type de police dans la boîte jaune.): alt text http://www.investalks.com/attachments/month_1005/10051420318460461ffea5a2f9.jpg

Répondre

1

Vous ne montrez pas assez de code pour déterminer si la taille est en fait le problème ...

Cela dit, votre code sera plus facile à lire si vous utilisez l'API deriveFont(), comme dans

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

Cela peut ou ne peut pas résoudre votre problème. Mon argent dépend de certains paramètres régionaux, qui renvoient des caractères qui n'ont pas de glyphes dans la police actuelle.