2

JComponentスイングアプリでは、を使用して、カスタムでテキストをレンダリングしていますGraphics.drawString()。ここにサンプルがあります:同じアプリで
テキスト 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
4

3 に答える 3

6

これにより、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);
            }
        };
于 2010-12-08T12:14:47.303 に答える
5

putClientProperty(SwingUtilities2.AA_TEXT_PROPERTY_KEY, null);

于 2010-02-15T14:33:34.563 に答える
1

結果を上のサンプルのように見せたい場合は、アンチエイリアシングを無効にします。

質問の最初のサンプルではアンチエイリアスが無効になっており、2 番目のサンプルでは有効になっています。

http://mindprod.com/jgloss/antialiasing.htmlによると、次のコードが役立ちます。

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

com.sun.java.*への参照により、アプリケーションが Sun 以外の JVM (および場合によっては異なるバージョンの Sun JVM) に移植できなくなることに注意してください。

于 2010-02-15T13:40:06.883 に答える