2

在一个摇摆应用程序中,我正在使用自定义渲染文本JComponent,使用Graphics.drawString(). 这是一个示例:在同一个应用程序中的
文本 http://img525.imageshack.us/img525/4928/drawstringsample.jpg
,我正在使用JTextPane. 这是一个示例:
替代文本 http://img28.imageshack.us/img28/1134/jtextpanesample.jpg

你能注意到较低的样本是如何被“弄脏”的吗?好吧,我不知道如何让它看起来像上面的样本。

谢谢,asaf :-)


更新:

  • 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

如果您希望您的结果看起来像上面的示例,那么您需要禁用抗锯齿。

您问题中的第一个示例禁用了抗锯齿,第二个示例启用了它。

根据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 回答