用JTextPane做了一个编辑器,有点像CSDN发帖或回帖的编辑器,现在我需要实现的 功能是:当点击字体加粗按钮时,所有文字都加粗,包含已经输入的后面将要输入的都要加粗,也就是一次设置整个文档的属性,如果我设置颜色,那么整个JTextPane文档内的文字都要变色我试过一下几种方法,但都不是要的效果:
1、以下方法只能改变当前段落,不能改变整个文档,,前面的段落无法设置
StyleConstants.setBold(sattr, b);
this.setParagraphAttributes(sattr, false);2、以下方法有点问题,当设置万样式后,如果输入文字,以前的文字会消失
this.select(0, document.getLength());
this.setCharacterAttributes(sattr, false);请赐教!!!!

解决方案 »

  1.   

    this.setCharacterAttributes(0, document.getLength(), sattr, true);
      

  2.   

    刚才错了 , 楼主的this应该是JTextPane
    那应该是
    this.getStyledDocument().setCharacterAttributes(0, document.getLength(), sattr, true);
      

  3.   

    this.getStyledDocument().setCharacterAttributes(0, document.getLength(), sattr, true);
      

  4.   


    还是有问题,比如我已近输入了10个字,那么当我点击按钮的时候,此时document.getLength()=10,所以前面的10个字变色,但是我接着输入,这时没有点击按钮,就不会重新设置样式,所以仍然只有前面的10个字变色,如果我重新点击按钮才会所有的都变色,难道没有办法一次性就设置整体的样式,不管以后怎么输入都保持先前设置的属性??
      

  5.   

    this.getStyledDocument().setCharacterAttributes(0, document.getLength(), sattr, true);
    this.setParagraphAttributes(sattr, false);
    加起来就好了;
      

  6.   

    突然发现
    this.setParagraphAttributes(sattr, true);
    不就好了……
      

  7.   

    我是这样写的,终于行了,拿出来分享下:
    document.setCharacterAttributes(0, document.getLength(), sattr, false);设置已经输入的文字属性
    this.setCharacterAttributes(sattr, false);  //设置输入的属性