用JTextPane做了一个编辑器,有点像CSDN发帖或回帖的编辑器,现在我需要实现的 功能是:当点击字体加粗按钮时,所有文字都加粗,包含已经输入的后面将要输入的都要加粗,也就是一次设置整个文档的属性,如果我设置颜色,那么整个JTextPane文档内的文字都要变色我试过一下几种方法,但都不是要的效果:
1、以下方法只能改变当前段落,不能改变整个文档,,前面的段落无法设置
StyleConstants.setBold(sattr, b);
this.setParagraphAttributes(sattr, false);2、以下方法有点问题,当设置万样式后,如果输入文字,以前的文字会消失
this.select(0, document.getLength());
this.setCharacterAttributes(sattr, false);请赐教!!!!
1、以下方法只能改变当前段落,不能改变整个文档,,前面的段落无法设置
StyleConstants.setBold(sattr, b);
this.setParagraphAttributes(sattr, false);2、以下方法有点问题,当设置万样式后,如果输入文字,以前的文字会消失
this.select(0, document.getLength());
this.setCharacterAttributes(sattr, false);请赐教!!!!
那应该是
this.getStyledDocument().setCharacterAttributes(0, document.getLength(), sattr, true);
还是有问题,比如我已近输入了10个字,那么当我点击按钮的时候,此时document.getLength()=10,所以前面的10个字变色,但是我接着输入,这时没有点击按钮,就不会重新设置样式,所以仍然只有前面的10个字变色,如果我重新点击按钮才会所有的都变色,难道没有办法一次性就设置整体的样式,不管以后怎么输入都保持先前设置的属性??
this.setParagraphAttributes(sattr, false);
加起来就好了;
this.setParagraphAttributes(sattr, true);
不就好了……
document.setCharacterAttributes(0, document.getLength(), sattr, false);设置已经输入的文字属性
this.setCharacterAttributes(sattr, false); //设置输入的属性