如何设置要在JTextPane中键入的文本的样式

时间:2010-03-02 00:35:58

标签: java swing

我有一个JTextPane,我可以修改其中一部分文本的样式。

假设选择了JTextPane中的任何内容,我希望能够修改尚未包含的部分的样式,也就是说,设置用户下一个要键入的样式。

使用长度= 0的setCharacterAttributes(start,length,style,attributeSet,replace)似乎不会这样做。

2 个答案:

答案 0 :(得分:4)

如果在文本窗格的文档上设置DocumentFilter(假设您使用的AbstractDocument子类具有setDocumentFilter方法),则可以向文本添加属性集插入或更换时。

修改

作为一个简单示例,这是replaceDocumentFilter方法的一种实现,当用户键入“a”时,该方法会将文本变为红色:

public void replace( FilterBypass fb, int offset, int length,
    String text, AttributeSet attrs ) throws BadLocationException
{
  if ( text.startsWith( "a" ) )
  {
    SimpleAttributeSet newAttrs = new SimpleAttributeSet();
    StyleConstants.setForeground( newAttrs, Color.RED );
    attrs = newAttrs;
  }

  super.replace( fb, offset, length, text, attrs );
}

答案 1 :(得分:1)

试试这个:

    doc.setCharacterAttributes(0, doc.getLength() + 1, attributeSet, false);