【问题标题】:Java Change Color of Element on JTextPane using StyledDocumentJava 使用 StyledDocument 更改 JTextPane 上元素的颜色
【发布时间】:2012-04-02 11:59:07
【问题描述】:

这对我来说有点矫枉过正..我正在使用 JTextPane 聊天,我在那里有颜色..我想要的是,参考改变它颜色的元素.. 我正在使用 StyledDocument,我不知道该怎么做..

提前致谢 ;)

【问题讨论】:

    标签: java swing colors styles jtextpane


    【解决方案1】:

    好像你的要求可以用一个方法来描述,看看:

    private void appendToPane(JTextPane tp, String msg, Color c)
    {
        StyleContext sc = StyleContext.getDefaultStyleContext();
        AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c);
    
        aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Lucida Console");
        aset = sc.addAttribute(aset, StyleConstants.Alignment, StyleConstants.ALIGN_JUSTIFIED);
    
        int len = tp.getDocument().getLength();
        tp.setCaretPosition(len);
        tp.setCharacterAttributes(aset, false);
        tp.replaceSelection(msg);
    }
    

    只需尝试将您的JTextPane 的引用以及您要提供的String 和相应的Colour 传递给此方法并查看魔术:-)

    【讨论】:

    • 谢谢,这是用于插入带颜色的文本,我知道伙计。我正在寻找的是在已经插入的文本上编辑颜色的东西,你看到了吗? StanislavL 已经帮助了我 ;) 谢谢
    • @TiagoM :啊哈,我好像误解了这个问题 :( ,我的错,很抱歉。
    • @TiagoM : 呵呵,最欢迎你,保持微笑:-)
    【解决方案2】:

    使用 setCharacterAttributes()。使用 StyleConstants.setBackground()/setForeground() 在 SimpleAttributeSet 中定义所需的颜色。使用 Element 的开始和结束偏移量作为偏移量和长度。

    如果最后一个属性为 false,则仅替换 SimpleAttributeSet 中定义的 Element 的 thouse 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-10
      • 2013-02-20
      • 1970-01-01
      • 2010-12-11
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多