java编辑器编写中的问题解决记录

来源:互联网 发布:js 里的clientleft 编辑:程序博客网 时间:2024/05/05 06:17

今天起的有点晚,所以周日除了睡觉的时间都坐在电脑前面了,继续编辑我的软件,今天收获还是不小的,解决了不少问题,其中有两个值得记录一下的,写一下:

     1、一个低级的,但是不容易察觉得错误,代码如下:

      if (keywords.contains(word)) {
   // 如果是关键字,着蓝色
     SwingUtilities.invokeLater(new ColouringTask(doc, pos, wordEnd
     - pos, keywordStyle));
  }
  if (test.contains(word)) {

 //另一种关键字,着红色
   SwingUtilities.invokeLater(new ColouringTask(doc, pos, wordEnd
     - pos, testStyle));
  } else {

//不是关键字,着黑色

   SwingUtilities.invokeLater(new ColouringTask(doc, pos, wordEnd
     - pos, normalStyle));
  }

不细看没有错误,但是蓝色的关键字是永远也着不上的,因为,下面的else是跟第二个if一起的,当遇到需着蓝色的关键字时,先着为蓝色,再执行第二个if,发现不符合,于是执行else,又将蓝色的关键字着为黑色了,所以蓝色是着不上的。

应改为,

if(){}

else if() {}

else{}

提醒一下自己,以后注意。

2、怎么让JTextPane能够不自动换行

经过搜索,查阅,最后通过重写JTextPane的两个方法实现了。代码如下:

      public class NewTextPane extends JTextPane{

             public boolean getScrollableTracksViewportWidth() {
                        return false;
              }

               public void setSize(Dimension d) {
                     int parentWidth = this.getParent().getWidth();
                     if(parentWidth>d.width){
                     d.width = parentWidth;
                      }
               super.setSize(d);
             }
       }

                                                                           ---------Designer_Hu

原创粉丝点击