我有一个JTextPane,我可以修改其中一部分文本的样式。
假设选择了JTextPane中的任何内容,我希望能够修改尚未包含的部分的样式,也就是说,设置用户下一个要键入的样式。
使用长度= 0的setCharacterAttributes(start,length,style,attributeSet,replace)似乎不会这样做。
答案 0 :(得分:4)
如果在文本窗格的文档上设置DocumentFilter
(假设您使用的AbstractDocument
子类具有setDocumentFilter
方法),则可以向文本添加属性集插入或更换时。
修改
作为一个简单示例,这是replace
中DocumentFilter
方法的一种实现,当用户键入“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);