2010-02-15 4 views
2

dans l'application d'une balançoire je suis le texte de rendu avec un JComponent personnalisé, en utilisant Graphics.drawString(). voici un exemple:
aa text http://img525.imageshack.us/img525/4928/drawstringsample.jpg
dans cette même application, je suis en train de rendre le texte en utilisant un JTextPane. Voici un exemple:
alt text http://img28.imageshack.us/img28/1134/jtextpanesample.jpgcomment faire JTextPane peinture police anti-aliasé?

pouvez-vous remarquer comment l'échantillon inférieur est un peu «taché»? Eh bien, je ne peux pas comprendre comment le faire ressembler à l'échantillon supérieur.

merci :-), Asaf


mise à jour:

  • System.setProperty("awt.useSystemAAFontSettings","false") et "lcd" aussi ne fonctionnent pas.
  • ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF) dans paint() ne fonctionne pas
  • putClientProperty(sun.swing.SwingUtilities2.AA_TEXT_PROPERTY_KEY, Boolean.TRUE) donne java.lang.ClassCastException: java.lang.Boolean cannot be cast to sun.swing.SwingUtilities2$AATextInfo

Répondre

4

putClientProperty(SwingUtilities2.AA_TEXT_PROPERTY_KEY, null);

+0

Si ceci est la solution actuelle, veuillez la marquer comme telle (en cochant la case "réponse acceptée"), TIA! – netzwerg

+0

yeh, mais SO me fait attendre 2 jours ... – Asaf

+0

Ceci est une bibliothèque restreinte ... – Connorelsea

1

Si vous voulez que votre résultat pour ressembler à l'échantillon supérieur, alors vous voulez désactiver l'anti-aliasing.

L'anti-aliasing est désactivé pour le premier échantillon de votre question et le second est activé.

Selon http://mindprod.com/jgloss/antialiasing.html le code suivant devrait aider:

jtextArea.putClientProperty(com.sun.java.swing.SwingUtilities2.AA_TEXT_PROPERTY_KEY, Boolean.TRUE); 

Notez que la référence à com.sun.java.* fera votre application non-portable à la non-Sun JVMs (et éventuellement à différentes versions de Sun) JVMs.

+0

essayé System.setProperty ("awt.useSystemAAFontSettings", "false") et "lcd" aussi, mais sans résultat. – Asaf

+0

essayé ((Graphics2D) g) .setRenderingHint (RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF) dans paint(), mais sans résultats. – Asaf

+0

et putClientProperty (sun.swing.SwingUtilities2.AA_TEXT_PROPERTY_KEY, Boolean.TRUE) donne java.lang.ClassCastException: java.lang.Boolean ne peut pas être converti en sun.swing.SwingUtilities2 $ AATextInfo – Asaf

6

Cela se traduira par une police anticrénelage dans un JLabel. Assurez-vous d'appeler super.paintComponent (g); après avoir défini les RenderingHints.

JLabel lblFont = new JLabel(){ 

      @Override 
      public void paintComponent(Graphics g) { 
       Graphics2D graphics2d = (Graphics2D) g; 
       graphics2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
         RenderingHints.VALUE_ANTIALIAS_ON); 
       super.paintComponent(g); 
      } 
     }; 
+0

vous répondez parce que vous l'avez essayé et cela a résolu votre problème? – Asaf

+0

oui, dans mon cas, je pourrais activer et désactiver anti-aliasing avec cette approche. –

+0

@ b1tk0pf La combinaison de votre approche avec le code suivant rend le texte encore plus fluide - 'jTextPane1.putClientProperty (SwingUtilities2.AA_TEXT_PROPERTY_KEY, null); ' – Igor