JTextPane にアンチエイリアス フォントをペイントさせるにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2266199

  •  20-09-2019
  •  | 
  •  

質問

Swingアプリではカスタムでテキストをレンダリングしています JComponent, を使用して Graphics.drawString(). 。これがサンプルです:
aa テキスト http://img525.imageshack.us/img525/4928/drawstringsample.jpg
同じアプリで、を使用してテキストをレンダリングしています。 JTextPane. 。これがサンプルです:
代替テキスト http://img28.imageshack.us/img28/1134/jtextpanesample.jpg

下のサンプルが少し「汚れている」のがわかるでしょうか?うーん、上のサンプルのように見せる方法がわかりません。

ありがとう、アサフ:-)


アップデート:

  • System.setProperty("awt.useSystemAAFontSettings","false") そして "lcd" も機能していません。
  • ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF)paint() 機能していません
  • putClientProperty(sun.swing.SwingUtilities2.AA_TEXT_PROPERTY_KEY, Boolean.TRUE) 与える java.lang.ClassCastException: java.lang.Boolean cannot be cast to sun.swing.SwingUtilities2$AATextInfo
役に立ちましたか?

解決 2

putClientProperty(SwingUtilities2.AA_TEXT_PROPERTY_KEY, null);

他のヒント

このはJLabelのでアンチエイリアスフォントになります。あなたはsuper.paintComponent(g)を呼び出すことを確認してください。 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);
            }
        };
あなたの結果は、上のサンプルのように見えるようにしたい場合は、

、そして、あなたがしたいと、の無効化のアンチエイリアシングます。

あなたの質問の最初のサンプルは、アンチエイリアシング無効になっており、第二のサンプルは、それが有効になっています。

http://mindprod.com/jgloss/antialiasing.html の次によると、コードは役立つはずます:

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

com.sun.java.*への参照は(日のJVMの異なるバージョンへの可能性と)アプリケーションが非日のJVMへの非ポータブルになることに注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top