JTextPane中的字体颜色同质性问题 - java

当我在黑色JTextPane上添加一些白色文本时,字体颜色不均匀,导致效果模糊。如果我在同一个JTextPane中使用drawString,则文本会很好地绘制。
更改ANTIALIASING不能解决问题。

该代码只是我的问题的一个简单示例,这就是我得到的:

JTextPane中的字体颜色同质性问题 - java

谢谢大家

public final class Example extends JTextPane {

    public static void main(String... aArgs){
        new Example();
    }

    Example() {
        JFrame mainFrame= new JFrame(); 
        mainFrame.setSize(200,200);
        mainFrame.getContentPane().setLayout(new BorderLayout());
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setVisible(true);
        setBackground(Color.black);

        StyledDocument doc = getStyledDocument();
        Style style = addStyle("I'm a Style", null);
        StyleConstants.setForeground(style, Color.white);
        StyleConstants.setFontFamily(style,"Courier New");
        StyleConstants.setFontSize(style, 20);

        try { doc.insertString(doc.getLength(), "   Example1",style); }
        catch (BadLocationException e){}

        mainFrame.getContentPane().add(this);
    }

    public void paintComponent(Graphics g) {
        Graphics2D graphics2d = (Graphics2D) g;
        graphics2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        graphics2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
                RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        graphics2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
                RenderingHints.VALUE_FRACTIONALMETRICS_ON);

        super.paintComponent(graphics2d);

        graphics2d.setColor(Color.white);
        Font courier = new Font("Courier New",0,20);
        graphics2d.setFont(courier.deriveFont(20));
        graphics2d.drawString("   Example2", 0, 150);
    }

}

参考方案

我找到了解决方法how to make JTextPane paint anti-aliased font?

我必须添加到JTextPane

putClientProperty(SwingUtilities2.AA_TEXT_PROPERTY_KEY, null);

并且必须同时删除RenderingHints.KEY_ANTIALIASING和RenderingHints.KEY_TEXT_ANTIALIASING

Java Swing SearchBox模型 - java

我需要使用Java Swing的搜索框,如果单击任何建议,当输入字母时它将显示来自数据库的建议,它将执行一些操作。如果有可能在Java swing中,请提供源代码提前致谢 java大神给出的解决方案 您可以使用DefaultComboBoxModel,输出将是这样。Try this在此代码中,您将找到countries数组,因此您需要从数据库中获取此数组。

Swing-典型桌面应用程序中的并发 - java

这可能是一个广泛的问题,但我想知道单用户桌面应用程序通常在何处使用并发。您如何发现理想情况下(在设计阶段)并发问题?附注:从操作系统理论上来说,并发问题通常发生在无法共享资源(例如打印机)的情况下。不过,我仍然对在编程级别上可能发生的情况感到迷惑。 java大神给出的解决方案 Event Dispatch thread与其他逻辑之间的Swing中可能存在线程…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…

JAVA 8具有任何匹配属性的对象的过滤器列表 - java

我的要求是通过匹配任何属性的字符串来过滤对象列表。例如,假设Contact类具有三个属性:街道,城市,电话。我知道java流过滤器是如何工作的,在这里我必须将输入字符串与每个属性进行比较,如下所示:contactList.stream().filter(contact -> contact.getStreet().equals("dubai&…