Java 如何完全禁用JTextPane的文本突出显示?

Java 如何完全禁用JTextPane的文本突出显示?,java,swing,user-interface,highlight,jtextpane,Java,Swing,User Interface,Highlight,Jtextpane,请告诉我如何禁用JTextPane的文本突出显示。 我的JTextPane是半透明的,因此突出显示错误。但是没有突出显示是好的 我尝试了以下方法: DefaultHighlighter highlighter = (DefaultHighlighter) chatTextPane.getHighlighter(); highlighter.removeAllHighlights(); chatTextPane.setHighlighter(null); chatTextPane.setSe

请告诉我如何禁用
JTextPane
的文本突出显示。 我的
JTextPane
是半透明的,因此突出显示错误。但是没有突出显示是好的

我尝试了以下方法:

DefaultHighlighter highlighter =  (DefaultHighlighter) chatTextPane.getHighlighter();
highlighter.removeAllHighlights();

chatTextPane.setHighlighter(null);

chatTextPane.setSelectedTextColor(new Color(0,0,0,0));
chatTextPane.setSelectionColor(new Color(0,0,0,0));

chatTextPane.setSelectionStart(0);
chatTextPane.setSelectionEnd(0);

chatTextPane.setCaret(new NoTextSelectionCaret(chatTextPane));
// with:
private class NoTextSelectionCaret extends DefaultCaret
{
    public NoTextSelectionCaret(JTextComponent textComponent)
    {
        setBlinkRate( textComponent.getCaret().getBlinkRate() );
        textComponent.setHighlighter( null );
    }

    @Override
    public int getMark()
    {
        return getDot();
    }
}
以及带有highlighter.getDrawsLayeredHighlights()的内容我甚至都不记得了


谢谢

由于Swing的工作方式,高亮显示显示了一些不受欢迎的瑕疵,我将JTextPane包装在另一个透明颜色的面板中

要消除工件,请将JTextPane包装为一个

然后:

并将AlphaContainer添加到框架中。如果AlphaContainer要包含在另一个组件中,请将另一个组件设置为
setOpaque(false)

然后可以设置
chatterxtpane.setHighlighter(null)如果需要,禁用高亮显示


有关更多详细信息,请参见提供的

您的意思是不允许用户使用鼠标或键盘在
JTextPane
中选择文本?换句话说,,如果用户在
JTextPane
中的某些文本上拖动鼠标,则该文本将不会突出显示?为什么不将突出显示的颜色与JTextPane背景相同,这样您就根本看不到它?我的JTextPane是半透明的-有关可能的问题和一些解决方案,请参阅。@camickr谢谢!我能想出来out@Abra这就是我的意思。我的问题是突出显示文本时出现的不受欢迎的工件
public class AlphaContainer extends JComponent
{
    private JComponent component;

    public AlphaContainer(JComponent component)
    {
        this.component = component;
        setLayout( new BorderLayout() );
        setOpaque( false );
        component.setOpaque( false );
        add( component );
    }

    /**
     *  Paint the background using the background Color of the
     *  contained component
     */
    @Override
    public void paintComponent(Graphics g)
    {
        g.setColor( component.getBackground() );
        g.fillRect(0, 0, getWidth(), getHeight());
    }
}
AlphaContainer ac = new AlphaContainer(chatTextPane);